Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 23/12/2007, à 13:57

Beamo

[Resolu] Programation en C - strings.h

Bonjour,

J'ai installé build-essential

J'ai une fonction qui ressemble a:

typedef struct touche_ {
        char *lettre;
        struct touche_ *suite[8];
}
touche;

touche *create(char *lettre, char *newlettre) {

        touche *T;
        T = (touche*)malloc(sizeof(touche));
        strcat (lettre, newlettre);
        T->lettre = lettre;
        printf("try: %s\n", T->lettre);
        T->suite[0] = NULL;
        return T;
}

Si je fais un #include<strings.h> à  la compilation j'obtiens que strcat n'est pas défini
Si je fais un #include<string.h> la compilation passe mais j'ai un segfault lorsqu'il tente le strcat.
En faisant un printf juste avant j'ai bien vérifié que mes variables lettre et newlettre sont bien des %s.

Des idées ? smile

Beamo

Dernière modification par Beamo (Le 23/12/2007, à 16:54)

Hors ligne

#2 Le 23/12/2007, à 14:07

leibowitz

Re : [Resolu] Programation en C - strings.h

char *strcat (char *dest, const char *src);

La fonction strcat() ajoute la chaà®ne src à  la fin de la chaà®ne dest en écrasant le caractère « \0 » à  la fin de dest, puis en ajoutant un nouveau  caractère « \0 » final. Les chaà®nes ne doivent pas se chevaucher, et la chaà®ne dest doit être assez grande pour accueillir le résultat.

Ce qui veut dire que tu essayes de copier le contenu de newlettre à  la fin de lettre. Mais est-ce que ta variable passée en premier argument à  ta fonction create est assez grande pour accueillir la concaténation des valeurs contenues dans ces deux variables ?

C'est probablement de là  que vient ton segfault.

Remarque: la fonction strcat est définie dans le fichier #include <string.h>

Hors ligne

#3 Le 23/12/2007, à 14:23

Beamo

Re : [Resolu] Programation en C - strings.h

C'était bien ça !!!

je te remerci !

Beamo

Hors ligne