Commit 7bb61682e10f700767a864e569f133364e0c4e6e

Authored by pvernier
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 }
... ...