#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 ?
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