[C] - Probleme de fgets dans boucle !

Résolu
Estydral Messages postés 39 Date d'inscription   Statut Membre Dernière intervention   -  
 lami20j -
Bonjour,

Je rencontre un petit problème dans le cadre de l'utilisation de la fonction fgets() aprés une boucle while:

Lors du premier passage dans la boucle, tout fonctionne a merveille, mais lorsque je repasse une seconde fois dans cette boucle while, le fgets est toujours en position finale et ne s'effectue plus.

Partie de code:

while (cpt_verbose <= 5)
{
while (fgets(ligne, LONG, entree) != NULL)
{
//traitement
}
}

Ce que je recherche simplement, c'est une méthode pour "réinitialiser" le fgets() et ainsi continuer d'effectuer mes traitements.

Merci!
Estydral
Configuration: Linux
Firefox 3.5.6

3 réponses

  1. Estydral Messages postés 39 Date d'inscription   Statut Membre Dernière intervention   6
     
    Je regarde de suite !

    EDIT: Ça fonctionne nickel, merci pour cette réponse rapide et précise ;)
    0
  2. lami20j
     
    Salut,

    Un exemple

    lami20j@debian-acer:~/c$ cat fic.txt 
    ligne1
    ligne2
    ligne3
    lami20j@debian-acer:~/c$ cat lire.c 
    #include<stdio.h>
    #include<stdlib.h>
    
    int main()
    {
      FILE* fic;
      int i=0;
      char s[20];
      if(NULL==(fic=fopen("fic.txt","r")))
        return EXIT_FAILURE;
      while(i<3){
        while(fgets(s,19,fic)!=NULL)
          printf("%s",s);
        printf("************ fin passage %d **************\n",i);
        i+=1;
        rewind(fic);
      }
      return EXIT_SUCCESS;
    }
    
    lami20j@debian-acer:~/c$ gcc -Wall lire.c
    lami20j@debian-acer:~/c$ ./a.out 
    ligne1
    ligne2
    ligne3
    ************ fin passage 0 **************
    ligne1
    ligne2
    ligne3
    ************ fin passage 1 **************
    ligne1
    ligne2
    ligne3
    ************ fin passage 2 **************
    lami20j@debian-acer:~/c$ 
    
    0