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 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
|
Dlist **recupfichier(etudiants *pers) //recuperation du fichier
{
etudiants *nouvo, *tmp;
Dlist *l;
l=malloc(sizeof(Dlist));
FILE *fic; //variable type fichier
char nom[15],prenom[15],filiere[15],adresse[30], tel[10];
int niveau;
int cmpt=1;
if(!pers) //si la liste n'existe pas
{
pers = malloc(sizeof(etudiants));
nouvo = malloc(sizeof(etudiants));
l->p_head=pers;
pers->suiv = NULL;
pers->prec = NULL;
nouvo = pers;
//ouverture ou creation du fichier en ecriture et test si probleme
if((fic = fopen("GestionEtudiants.txt", "r"))==NULL) printf("erreur d'ouverture");
else //si pas de probleme
{
while(fscanf(fic, "%s\n", nom)!=-1) //si il y a encore un nom de famille
{
nouvo=malloc(sizeof(etudiants)); //a lire dans le fichier
strcpy(nouvo->nom, nom);
fscanf(fic, "%s\n", prenom); //lit un prenom et le met dans variable
strcpy(nouvo->prenom, prenom); //met dans la cellule
fscanf(fic, "%s\n", adresse);
strcpy(nouvo->adresse, adresse);
fscanf(fic, "%s\n", tel);
strcpy(nouvo->tel, tel);
fscanf(fic, "%s\n", filiere);
strcpy(nouvo->filiere, filiere);
fscanf(fic, "%d\n", &niveau);
//cree une nouvelle cellule
tmp=malloc(sizeof(etudiants));
tmp = nouvo;
etudiants *nouvo;
nouvo = malloc(sizeof(etudiants));
tmp->suiv = nouvo;
nouvo->prec = tmp;
//l->p_head=pred;
}
//efface la derniere cellule cree car ne sert a rien
free(nouvo);
tmp->suiv = NULL;
l->p_tail=tmp;
}
fclose(fic); //ferme le fichier
}
else printf("\n### impossible de charger le fichier, une liste existe deja... ###\n");
//affichertous(l);
return &l; //renvoi l'adresse de la liste
} |
Partager