Liste chainée avec chaine de caractère
j'ai une liste chainée avec comme valeur une chaine de caractère.
Code:
1 2 3 4 5 6 7 8 9
| typedef struct Liste
{
char *valeur;
struct Liste *suivant;
} Liste ; |
j'ai une fonction ajouter
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
|
void ajouter(Liste **sl, char* Val)
{
Liste *tmp = NULL;
Liste *csl = *sl;
Liste *elem = (Liste*)malloc(sizeof(Liste));
if(!elem) exit(EXIT_FAILURE);
//strcpy(elem->valeur,Val);
//elem->valeur=malloc(strlen(Val)*sizeof(char));
//strcpy(elem->valeur,res);
elem->valeur=Val;
elem->suivant=NULL;
while(csl)
{
tmp = csl;
csl = csl->suivant;
}
if(tmp)
tmp->suivant = elem;
else {
*sl = elem;
}
} |
le problème c'est que si j'alloue de la memeoire pour la chaine de caractère dans cette fonction je recoit une erreur de sementation.
et si j'enlève l'allocation il n'y a pas d'erreur mais le problème c'est que j'appelle la fonction ajouter plusieurs fois et si je garde l'affectation de la chaine de caractère je vais me retrouver avec tous les elements de liste pointé sur une meme chaine null.