Salut tout le monde .

J'ai besoin de votre aide à propos du fonctionnement de feof(), cette fonction qui renvoie la valeur 0 si elle arrive à la fin du fichier passer en paramètre.

Bon, j'ai essayer de travailler avec cette dernière dans un programme qui permet de lire et enregistrés des informations sur des employés dans un fichier texte ' Employe.txt ', et afficher les infos enregistré dans le fichier. Pour la lecture du fichier j'ai utilisé la fonction feof(nom_pointeur_fich) comme condition de fin de lecture, même si j'avais la possibilité d'utilisé simplement for() puisque je connais déjà le nombre d'enregistrement...

Mais j'ai eu un problème avec la fonctions feof() car la boucle qui permet de lire du fichier et afficher son contenu tant que End of file = faux
while(feof(F)!=0);
n'affiche que la première ligne (le premier enregistrement) :/ .

Voila le code que j'ai utilisé :

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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
#include <stdio.h>
#include <stdlib.h>
 
typedef struct employe // Debut structure des employé
{
       char Nom[51];
       int Matricule;
       char adresse[51];
}employe;              // Fin structure des emplyé
 
void viderBuffer()
{
    int c = 0;
 	   while (c != '\n' && c != EOF)
 	   {
     	   c = getchar();
    }
}
 
int main(int argc, char *argv[])
{
    employe *e; // un pointeur du type employ - role d'un tableau des employé -
    FILE *F=NULL;
    int i=0,j,rep;
    char ch;
 
F=fopen("Employe.txt","w");
 
do // Debut du remplissage des infos et écriture sur le fichier .
{   
    e=malloc(1*sizeof(employe));
 
    printf("\nEntrer le Nom de l'employe Numero %d > ",i+1);
    fgets(e->Nom,50,stdin);
    *(e->Nom+(strlen(e->Nom)-1))='\0';
    fprintf(F," %s |",e->Nom);
 
    printf("Entrer Le Matricule > ");
    scanf("%d",&e->Matricule);
    viderBuffer();
    fprintf(F," %d |",e->Matricule);
 
 
    printf("Entrer L'adresse > ");
    gets(e->adresse);
    fprintf(F," %s\n",e->adresse);
 
    free(e);
    i++;
 
    printf("\n\tAjouter un nouveau employee ?? Oui = 1 | Non = 0 \n > ");
    scanf("%d",&rep);
    viderBuffer();
}
while(rep!=0); // Fin du remplissage des infos et écriture sur le ficheier .
fclose(F);
 
F=fopen("Employe.txt","r");
    j=0;
    do
    {
                    printf(" %d : ",j+1);
                    do
                    {
                           ch=fgetc(F);
                           putchar(ch);
                    }
                    while(ch!='\n');
 
                    printf("\n");
                    j++;
    }
    while(feof(F)!=0);
 
fclose(F);
 
 
  system("PAUSE");	
  return 0;
}
j’espère que vous pouvez m'aider a trouvé le problème qui empêche ce code de fonctionner , Merci d'avance .


Si vous avez des suggestions ou bien des remarques sur ce code n'hésitez pas a me le dire, toute aide sera la bienvenue !!