Bonjour,

j'ai un problème dans un programme C lors de l'utilisation des structures dans les fichiers.. c'est que cette boucle est infinie !!
ceci est la procédure de remplissage du 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
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
void remp(){
   printf("donner le nome de fichier a creer : \n");
   scanf("%s",f);
   p = fopen(f, "w");
 
  printf("*** Création du fichier %s ***\n", f);
 
  printf("nombre des personnes que vous voulez ajoute :\n ");
 
  scanf("%d",&n);
 
  for (i=0;i<n;i++)
 
    {
 
     printf("personne N: %d \n", i+1);
 
     printf("Numero de personne N: %d \n", i+1);
     scanf("%d",&e.nm);      
 
     printf("Nom de personne N: %d \n", i+1);
     scanf("%s",e.nom);
 
     printf("Prenom de personne N: %d \n", i+1);
     scanf("%s",e.pnom);
 
     printf("adress electronique de personne N: %d \n", i+1);
     scanf("%s",e.email);
 
     printf("date de naissance de personne N: %d \n", i+1);
     scanf("%d",&e.d.j);
     scanf("%d",&e.d.m);
     scanf("%d",&e.d.a);
 
     fprintf(p, "%d, %s, %s, %s, %d/%d/%d\n",e.nm,e.nom,e.pnom,e.email,e.d.j,e.d.m,e.d.a);
 
     }
     fclose(p);
 
}
et ceci est la procédure d'ajout des autres personnes :
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
 
void ajoute(){
  printf("donner le nome de votre fichier : \n");
   scanf("%s",f);
  p = fopen(f, "r");
  c=0;
 
  if (!p)
 
     {  
 
      c=1;
 
     }
  if(c==0){
 
 
  q = fopen(qq, "w");
 
 
 
      printf("personne N: %d \n", i+1);
 
     printf("Numero de personne N: %d \n", i+1);
     scanf("%d",&e.nm);      
 
     printf("Nom de personne N: %d \n", i+1);
     scanf("%s",e.nom);
 
     printf("Prenom de personne N: %d \n", i+1);
     scanf("%s",e.pnom);
 
     printf("adress electronique de personne N: %d \n", i+1);
     scanf("%s",e.email);
 
     printf("date de naissance de personne N: %d \n", i+1);
     scanf("%d",&e.d.j);
     scanf("%d",&e.d.m);
     scanf("%d",&e.d.a);
 
 
  while (!feof(p))
 
    {
     fscanf(p, "%d, %s, %s, %s, %d/%d/%d\n",&e.nm,e.nom,e.pnom,e.email,e.d.j,e.d.m,e.d.a);
 
     fprintf(q,"%d, %s %s, %s, %d/%d/%d\n",e.nm,e.nom,e.pnom,e.email,e.d.j,e.d.m,e.d.a);
 
    }
 
 
   fprintf(q,"%d, %s %s, %s, %d/%d/%d\n",e.nm,e.nom,e.pnom,e.email,e.d.j,e.d.m,e.d.a);
 
  while (!feof(p))
 
    {
     fscanf(q, "%d, %s, %s, %s, %d/%d/%d\n",&e.nm,e.nom,e.pnom,e.email,e.d.j,e.d.m,e.d.a);
 
     fprintf(p,"%d, %s %s, %s, %d/%d/%d\n",e.nm,e.nom,e.pnom,e.email,e.d.j,e.d.m,e.d.a);
 
    }
  fclose(q);
  fclose(p);
}
else if (c==1){ printf("\a erreur: impossible d'ouvrir  le fichier: %s.\n", f);}
}
la boucle infinie est:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 while (!feof(p))
 
    {
     fscanf(p, "%d, %s, %s, %s, %d/%d/%d\n",&e.nm,e.nom,e.pnom,e.email,e.d.j,e.d.m,e.d.a);
 
     fprintf(q,"%d, %s %s, %s, %d/%d/%d\n",e.nm,e.nom,e.pnom,e.email,e.d.j,e.d.m,e.d.a);
 
    }
et aussi cette boucle est infinie !! :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 while (!feof(p))
 
    {
     fscanf(q, "%d, %s, %s, %s, %d/%d/%d\n",&e.nm,e.nom,e.pnom,e.email,e.d.j,e.d.m,e.d.a);
 
     fprintf(p,"%d, %s %s, %s, %d/%d/%d\n",e.nm,e.nom,e.pnom,e.email,e.d.j,e.d.m,e.d.a);
 
    }
merci de m'aider à résoudre ce problème...

merci d'avance