Bonjour,

J'enregistre dans un fichier une liste chainee d'elements.
J'écris dans le fichier élément par élément, cela se passe bien.

Voici de quoi se compose ma liste :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
struct car
{
  personne pers; //personne est une structure
  struct car *suivant;
};
 
typedef struct car carnet;
typedef carnet *liste;
Le code pour charger une liste a partir de mon fichier :
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
liste car;
  liste temp, suivant;
  FILE *pf;
 
  pf=fopen("carnet.dat", "r");
 
  if(pf != NULL)
    {
      car = (liste) malloc(sizeof(carnet));
      fread(&car->pers, sizeof(carnet), 1, pf);
      temp=car;
 
      while(!feof(pf))
	{
	  suivant = (liste) malloc(sizeof(carnet));
	  fread(&suivant->pers, sizeof(carnet), 1, pf);
	  temp->suivant = suivant;
	  temp = suivant;
	}
    }
 
  fclose(pf);
Voila mon probleme : Ca marche bien (bon ce n'est pas ca mon probleme ) sauf que j'ai toujours un maillon de trop, par exemple si j'ai 5 personnes dans ma liste, j'ai bien mes 5 personnes avec le chainage qui va bien, mais j'ai toujours une personne en plus en fin de liste qui a des valeurs vides (valeurs de la structure personne).