[C] - Probleme de fgets dans boucle !

Résolu/Fermé
Estydral Messages postés 39 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 23 janvier 2016 - 27 déc. 2009 à 11:32
 lami20j - 27 déc. 2009 à 11:45
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

3 réponses

chuka Messages postés 965 Date d'inscription samedi 11 octobre 2008 Statut Membre Dernière intervention 29 juillet 2010 378
27 déc. 2009 à 11:37
Salut,
regarde ce lien:http://www.cplusplus.com/reference/cstdio/rewind/
peut-etre cette fonction pourra t'aider!!
@+
2
Estydral Messages postés 39 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 23 janvier 2016 6
27 déc. 2009 à 11:39
Je regarde de suite !

EDIT: Ça fonctionne nickel, merci pour cette réponse rapide et précise ;)
0
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