Liste chainée de liste chainée
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 :
Code:
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; |
Pour enregistrer cette liste dans un fichier, j'utilise la fonction suivante :
Code:
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);
} |
Mon probleme se trouve dans la fonction charger. Je ne sais pas quoi mettre dans la boucle qui va relier chaque enfant à une famille.
Voila le code de la fonction :
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
|
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);
} |
Merci d'avance pour votre aide.