C LAN. boucle infinie au l'etulisation des str. dans les fichier

Fermé
The Root Messages postés 1 Date d'inscription mardi 29 janvier 2013 Statut Membre Dernière intervention 29 janvier 2013 - 29 janv. 2013 à 14:08
 the root - 1 févr. 2013 à 19:47
Bonjour,

j'ais un problemme dans un programme C lorsque l'utilisation des structures dans les fichiers.. c'est que cette boucle est infinie !!
c'est le procedure de remplissage du fichier:



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 c'est le procedure d'ajoute des autres personnes:






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:




  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 !! :






  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 resoule cet problemme...

merci d'avance :)
A voir également:

1 réponse

smohamedl Messages postés 22 Date d'inscription lundi 31 décembre 2012 Statut Membre Dernière intervention 2 mai 2013 1
1 févr. 2013 à 16:39
c'est quoi la fonction feof() sans connaitre son code on ne peut pas t'aider , car peut etre que !feof(p) n'existe pas ( feof(p) ne return jamais une valeure nulle ).
0
[Dal] Messages postés 6194 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 11 octobre 2024 1 092
1 févr. 2013 à 17:50
0
smohamedl Messages postés 22 Date d'inscription lundi 31 décembre 2012 Statut Membre Dernière intervention 2 mai 2013 1
1 févr. 2013 à 19:35
donc tu programme en c++, pourquoi avoir poster ta question dans le forum C ?
0
non c dons c lang. !!!!!!!!!!!!!!!!!!!!!!!!
0