Bonsoir a tous
Voila j'ai un fichier texte sur lequel j'effectue des traitements.
Une partie de mon programme pose probleme.
En fait la fonction affiche() ne peut s'effectuer 2 fois de suite correctement.La seconde n'affiche rien ce qui est normal.
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
 
#include<fstream>
using namespace std;
 
fstream f ("personnel.txt",f.in | f.out );
void affiche(){
      char *courant;
      while(f.getline(courant,100)) {
                 cout<<courant<< "  nbre de caract. lus: ";
                 int n=f.gcount();cout<<n<<endl;
      }
          // ici un 'f.clear();' fait buguer le programme en 
          // annonçant que l'exe doit fermer!!!  
      cout<<"etat: "<<f.rdstate()<<endl;// affiche 6 donc failbit 
                                        // et eofbit activés ce qui est normal
      f.seekg(0);cout<<"position pointeur: "<<f.tellg()<<endl;// affiche -1 
}
 
main() {
    affiche();  //ok pas de probleme
    affiche();  //probleme évidemment car good()==false donc pas d'entree ds le while
    f.close();
}
Est t'il possible de remédier à ce probleme sans avoir à fermer le fichier et a le rouvrir pour que cela marche?
Comment réactiver goodbit a la fin de affiche() etant donné que je ne peux pas compter sur l'instruction clear() pour le faire???!!
D'avance merci