Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème duplication strcat - [C]

Sujet résolu
    22 mai 2017 à 16:55:53

    Bonjour, 

    Alors voilà, j'ai une structure qui contient une chaîne. Cette structure est créée deux fois en donnant deux paramètres, un qui correspond à un chemin vers un dossier, l'autre le nom de la ressource. Une boucle va initialiser une nouvelle structure à chaque tour.

    Lors de la création de la structure, je copie la concaténation des deux chaines passées en paramètre dans la variable de la structure. La première instanciation se passe très bien. J'ai bien une structure avec ma variable concaténé de la forme "string_1string_2" 

    Cependant, lors de la deuxième concaténation, donc lors du deuxième appel à la fonction qui se charge de créer la structure, ma variable est "string_1string_2string_2". Et ainsi de suite si je fais plusieurs créations de structures. 

    Comment puis-je faire pour ne plus avoir ce problème et que toutes mes structures aient la bonne variable ?

    Merci

    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      22 mai 2017 à 17:39:55

      Salut, peux-tu poster le code source s'il te plaît? Merci.
      • Partager sur Facebook
      • Partager sur Twitter
        22 mai 2017 à 18:00:10

        Ma structure : 
        typedef struct Texture{
        	char path[100];
        	GLuint memory;
        	SDL_Surface *img;
        }Texture;
        Puis ma boucle qui va créer une nouvelle Texture à chaque tour :
        int i=0;
        for(i=0; i<2; i++){
            newTexture("1", "bar.jpg");
        }
        
        Je veux donc concaténer les deux paramètres. Dans cet exemple, en premier, j'ai "1/bar.jpg" et la deuxième fois "1/bar.jpgbar.jpg"
        La fonction qui doit concaténer :
        Texture newTexture(char *folder, char *name){
            Texture t;
            strcpy(t.path, strcat(folder, name));
            return t;
        }
        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          22 mai 2017 à 20:26:11

          Et après la structure est copiée dans un tableau de structures je suppose?

          (Désolé de mes question un peu idiotes mais je cherche à m'assurer que tout est bien géré)

          -
          Edité par Anonyme 22 mai 2017 à 20:26:56

          • Partager sur Facebook
          • Partager sur Twitter
            22 mai 2017 à 22:53:21

            Oui la structure est inclus dans une structure Ball, elle-même inclue dans une structure player, elle-même inclue en effet dans un tableau de structures. J'ai réussi à passer outre ce problème mais je suis curieux de savoir d'où ça peut venir.

            • Partager sur Facebook
            • Partager sur Twitter
              23 mai 2017 à 1:30:37

              Salut,

              strcat(dest, src) modifie dest d’où ton problème. Pour le résoudre, tu as plusieurs solutions, l’une d’entre elle étant de copier folder dans t.path, puis d’utiliser strcat(t.path, name).

              PS : ce serait mieux d’utiliser strncpy et strncat pour avoir des assurances sur les tailles des chaînes.

              • Partager sur Facebook
              • Partager sur Twitter
              Tutoriel Ruby - Bon tutoriel C - Tutoriel SDL 2 - Python avancé - Faîtes un zeste, devenez des zesteurs
                23 mai 2017 à 9:42:02

                merci pour les réponses. J'avis bien trouvé pourquoi j'avais cette erreur. En testant votre idée, cela fonctionne. Merci !
                • Partager sur Facebook
                • Partager sur Twitter

                Problème duplication strcat - [C]

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                • Editeur
                • Markdown