Commit 7bb61682e10f700767a864e569f133364e0c4e6e
1 parent
4e905f52
sauvegarde au propre (menage)
Showing
1 changed file
with
28 additions
and
29 deletions
Show diff stats
projet0segfault.c
... | ... | @@ -33,51 +33,48 @@ void ajout_tete(char elem, struct cell** pL) { |
33 | 33 | struct cell* p; |
34 | 34 | p = malloc(sizeof(struct cell)); |
35 | 35 | p->arbre = malloc(sizeof(struct node)); |
36 | + p->arbre->listeFils = NULL; | |
36 | 37 | p->arbre->lettre = elem; |
37 | 38 | p->arbreSuivant = *pL; |
38 | 39 | *pL = p; |
39 | 40 | } |
40 | 41 | |
41 | -struct cell * insertion(char elem, struct cell** pL) { | |
42 | +struct cell ** insertion(char elem, struct cell** pL) { | |
42 | 43 | if(((*pL) == NULL) || ((*pL)->arbre->lettre > elem)) { |
43 | 44 | ajout_tete(elem, pL); |
44 | - return (*pL); | |
45 | + return &(*pL)->arbre->listeFils; | |
45 | 46 | } |
46 | 47 | else if((*pL)->arbre->lettre == elem) { |
47 | - return (*pL); | |
48 | + return &(*pL)->arbre->listeFils; | |
49 | + } | |
50 | + else { | |
51 | + return insertion(elem, &(*pL)->arbreSuivant); | |
48 | 52 | } |
49 | - else return insertion(elem, &(*pL)->arbreSuivant); | |
50 | 53 | } |
51 | 54 | |
52 | 55 | |
53 | 56 | void lire_fichier(FILE* fd, struct node tab_arbre_prcp[]) { |
54 | 57 | |
55 | 58 | printf("lirefichier\n"); |
56 | - struct cell* localisationArbre; | |
59 | + struct cell** localisationArbre; | |
57 | 60 | char motLu[50]; |
58 | - | |
59 | 61 | while(fscanf(fd, "%s", motLu)==1) { |
60 | - int i = 0; | |
61 | - printf("while lire fichier\n"); | |
62 | - if((motLu[i] >= 'a') && (motLu[i] <= 'z')) { | |
63 | - | |
64 | - printf("if((motLu[i] >= 'a') && (motLu[i] <= 'z'))\n"); | |
65 | - localisationArbre = tab_arbre_prcp[motLu[0]-97].listeFils; | |
62 | + int i = 0; | |
63 | + if((motLu[0] >= 'a') && (motLu[0] <= 'z')) { | |
64 | + localisationArbre = &tab_arbre_prcp[motLu[0]-97].listeFils; | |
66 | 65 | } |
67 | 66 | |
68 | - if(motLu[i] == 39) { | |
69 | - | |
70 | - printf("if(motLu[i] == 39)"); | |
71 | - localisationArbre = tab_arbre_prcp[A].listeFils; //A = derniere case du tab | |
67 | + if(motLu[0] == 39) { | |
68 | + localisationArbre = &tab_arbre_prcp[A].listeFils; //A = derniere case du tab | |
72 | 69 | } |
73 | - | |
74 | - printf("avant while : localisation : %p\n", localisationArbre); | |
75 | 70 | while(motLu[i] != '\0') { |
76 | 71 | |
77 | 72 | i += 1; |
78 | 73 | printf("lettre lue : %c address : %p\n", motLu[i], localisationArbre); |
79 | - localisationArbre = insertion(motLu[i], &localisationArbre); | |
80 | - printf("localisation apres : %p\n", localisationArbre); | |
74 | + localisationArbre = insertion(motLu[i], localisationArbre); | |
75 | + printf("tab_arbre[%d].listeFils : %p\n",i, tab_arbre_prcp[i].listeFils); | |
76 | + /*printf("localisationArbre.lettre : %c\n", (*localisationArbre)->arbre->lettre); | |
77 | + printf("localisation apres : %p\n", localisationArbre);*/ | |
81 | 78 | printf("\n"); |
82 | 79 | } |
83 | 80 | } |
... | ... | @@ -99,16 +96,18 @@ int main(int argc, char* argv[]) { |
99 | 96 | printf("Error : couldn't open file\n"); |
100 | 97 | return 1; |
101 | 98 | } |
102 | - | |
103 | - | |
104 | - initialisation_tab_arbre(tab_arbre); | |
105 | - | |
99 | + printf("avant init tab_arbre[1] %c\n", tab_arbre[1].lettre); | |
100 | + printf("fd : %p\n", fd); | |
101 | + initialisation_tab_arbre(tab_arbre); | |
102 | + printf("apres init tab_arbre[1] %c\n", tab_arbre[1].lettre); | |
103 | + printf("fd apres init : %p\n", fd); | |
106 | 104 | printf("avant lire fichier\n"); |
107 | 105 | lire_fichier(fd, tab_arbre); |
108 | - //printf("tab_arbre[0].listeFils->arbre->lettre : %c\n", tab_arbre[0].listeFils->arbre->lettre); | |
109 | - //scanf("%c", &lettre); | |
110 | - //insertion(lettre, &(Arbre.listeFils)); | |
111 | - //printf("lettre : %c\n", Arbre.listeFils->arbre->lettre); | |
112 | - printf("avant return 0\n"); | |
106 | + printf("tab_arbre[0].lettre : %c\n", tab_arbre[0].lettre); | |
107 | + printf("tab_arbre[0].listeFils : %p\n", tab_arbre[0].listeFils); | |
108 | + printf("tab_arbre[0].listeFils->arbre : %p\n", tab_arbre[0].listeFils->arbre); | |
109 | + printf("tab_arbre[1].listeFils->arbre->lettre : %c\n", tab_arbre[0].listeFils->arbre->lettre); | |
110 | + printf("tab_arbre[0].listeFils->arbre->listeFils->arbre->lettre : %c\n", tab_arbre[0].listeFils->arbre->listeFils->arbre->lettre); | |
111 | + printf("tab_arbre[0].listeFils->arbre->listeFils->arbre->listeFils->arbre->lettre : %c\n", tab_arbre[0].listeFils->arbre->listeFils->arbre->listeFils->arbre->lettre); | |
113 | 112 | return 0; |
114 | 113 | } | ... | ... |