Bonjour,

Voici mon problème :

J'ai ces structure qui vont être utilisées dans un arbre binaire:

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
    };
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.

La fonction save à l'air de fonctionner :

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");
}
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
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");
    }
}
Merci d'avance pour votre aide