Bonjour,
Voici mon problème :
J'ai ces structure qui vont être utilisées dans un arbre binaire:
J'essaye d'écrire une fonction save qui as écrire les données encodées dans un fichier et une fonction read qui vas les lire et les réinserer.
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 struct personne { char nom[31];//nom de la personne (30 caractère max) char prenom[31];//prénom de la personne (30 caractère max) char nationalite[41];//nationalité de la personne (40 caractère max) }; struct film { char titre[51];//titre du film (50 caractère max) struct personne realisateur;//réalisateur du film struct personne *liste;//tableau dynamique de personnes (acteurs) int nbr;//nombre d'acteur dans le film int an;//année de réalisation du film }; struct noeud//arbre binaire { struct film fi; struct noeud *fg;//pointe vers le fils gauche struct noeud *fd;//pointe vers le fils droit };
La fonction save à l'air de fonctionner :
Mais je ne peux pas le savoir avec cetitude car ma fonction read refuse de fonctionner, j'ai un plantage mais aucunes erreurs ni warning à la compilation :
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 recursave (struct noeud* ptr,FILE *fp) { if(ptr != NULL) { fwrite(ptr, sizeof(struct noeud), 1, fp); recursave(ptr->fg,fp); recursave(ptr->fd,fp); } } void save(struct noeud *racine) { FILE *fp = NULL; if(!(fp = fopen("data","wb"))) printf("erreur ouverture fichier!\n"); else { if(!racine) { printf("Il n'y a rien %c %ccrire dans le fichier\n",133,130); system("pause"); system("cls"); } else { recursave(racine,fp); printf("Les donn%ces ont %ct%c sauvegard%ces avec succ%cs\n",130,130,130,130,138); system("pause"); system("cls"); } } if(fclose(fp)) printf("Erreur fermeture fichier.\n"); }
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 void read(struct noeud *racine) { struct film *f; FILE *fp = NULL; if (!(fp = fopen("data","rb"))) printf("erreur ouverture fichier!\n"); else { while((fread(f,sizeof(struct film),1,fp)) != EOF); inserer(&racine,new_noeud(*f)); if(fclose(fp)) printf("Erreur fermeture fichier.\n"); } }![]()
Partager