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 37 38 39 40 41 42 43
| /**
* Lis 1 patient dans le fichier et renvoie NULL si
* c'est impossible.
*/
patient * parse_patient(FILE * fichier)
{
patient * p = malloc(sizeof(patient));
if (p == NULL)
return NULL;
if (fread(p->nom, 1, 10, fichier) != 10)
return NULL;
if (fread(&(p->numpatient), 1, 1, fichier) != 1)
return NULL;
return p;
}
/**
* Lis la liste de tous les patients du fichier
*/
patient* read_patients()
{
// Si on ne peut lire le fichier, la liste est vide
FILE * fichier = fopen("patient.dat", "r");
if (fichier == NULL)
return NULL;
// On lit le premier patient : c'est la liste.
patient * first;
first = parse_patient(fichier);
// On continue de lire pour avoir toute la liste.
patient * p = first;
while (p != NULL)
{
p->next = parse_patient(fichier) ;
p = p->next;
}
fclose(fichier);
return first;
} |