j'ai une liste chainée avec comme valeur une chaine de caractère.
j'ai une fonction ajouter
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 typedef struct Liste { char *valeur; struct Liste *suivant; } Liste ;
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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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; } }
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.







Répondre avec citation









Partager