Bonjour, je rencontre un pb pour lire une liste chainée contenant une autre liste chainée dans un fichier.
La structure de ses listes est la suivante :
Pour enregistrer cette liste dans un fichier, j'utilise la fonction suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 typedef struct Famille { char nom[30]; struct Famille *next; struct Enfant *tete; } Famille; typedef struct Enfant { char prenom[30]; struct Enfant *next; } Enfant;
Mon probleme se trouve dans la fonction charger. Je ne sais pas quoi mettre dans la boucle qui va relier chaque enfant à une famille.
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 void sauvegarder(Famille **tete) { Famille *p = *tete; Enfant *e = NULL; FILE *f = fopen("db3", "wb"); while(p != NULL) { fwrite(p, sizeof(Famille), 1, f); e = p->tete; while(e != NULL) { fwrite(e, sizeof(Enfant), 1, f); e = e->next; } p = p->next; } fclose(f); }
Voila le code de la fonction :
Merci d'avance pour votre aide.
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 void charger(Famille **tete) { Famille *p = NULL, *q = NULL; Enfant *e = NULL, *ep = NULL; FILE *f = fopen("db3", "rb"); *tete = NULL; while(!feof(f)) { p = (Famille *) malloc(sizeof(Famille)); fread(p, sizeof(Famille), 1, f); if(*tete == NULL) *tete = p; else q->next = p; p->next = NULL; q = p; p->tete = NULL; while() { e = (Enfant *) malloc(sizeof(Enfant)); fread(e, sizeof(Enfant), 1, f); if(p->tete == NULL) p->tete = e; else ep->next = e; e->next = NULL; ep = e; } } fclose(f); }
Partager