[C++]Pb Fstream : plusieurs fichiers successifs avec la meme variable

Pb Fstream : plusieurs fichiers successifs avec la meme variable [C++] - C++ - Programmation

Marsh Posté le 20-04-2004 à 15:31:12    

Voici le code actuel volontairement schématisé

Code :
  1. string a;
  2. f.open("premierfichier",lecture);
  3. while (!f.eof())
  4.    f >> a;
  5. f.close()
  6. f.open("deuxiemefichier",lecture);
  7. while (!f.eof())
  8.    f >> a;
  9. f.close()


Lors de la lecture du deuxieme fichier, il ne rentre pas dans la boucle while (!f.eof()): on peut donc supposer que soit il est déjà à la fin du fichier, soit il ne trouve pas le fichier, ou alors une autre erreur inconnue.
Pourtant si je déclare une deuxieme variable fstream et que je l'utilise pour le deuxieme fichier, ca marche.
Y aurait il un probleme de positionnement ?
Quoi qu'il en soit, je ne parviens pas à corriger l'erreur (c'est pas mortel de créer des variables, mais bon si je peux coder propre je prefere ^^')
Merci d'avance :jap:


Message édité par moimoi7 le 20-04-2004 à 16:28:36
Reply

Marsh Posté le 20-04-2004 à 15:31:12   

Reply

Marsh Posté le 20-04-2004 à 15:41:35    

tu as déjà lu la documentation de eof :o
 
boolay :o
 

Code :
  1. #include <iostream>
  2. #include <fstream>
  3. #include <string>
  4. using namespace std;
  5. int main(int argc, char **argv)
  6. {
  7.   ifstream ifs;
  8.   istream *isp=0;
  9.   if(argc!=2)
  10.     {
  11.       cout << "Utilisation de « cin »\n";
  12.       isp=&cin;
  13.     }
  14.   else
  15.     {
  16.       cout << "Utilisation de  " << argv[1] << " \n";
  17.       ifs.open(argv[1]);
  18.       isp=&ifs;
  19.     }
  20.   istream &is(*isp);
  21.  
  22.   if(!is)
  23.     {
  24.       cout << "Impossible d\'ouvrir le flux\n";
  25.       return 1;
  26.     }
  27.   string s;
  28.   cout << "Lecture\n";
  29.   while(getline(is, s))
  30.     {
  31.       cout << s << '\n';
  32.     }
  33.   is.clear();
  34.   if(is.seekg(0, ifstream::beg))
  35.     {
  36.       cout << "Relecture\n";
  37.       while(getline(is, s))
  38. {
  39.   cout << s << '\n';
  40. }
  41.     }
  42.   else
  43.     {
  44.       cout <<  "Ce n'est pas un flux positionnable\n";
  45.     }
  46. }

troisième fois que je poste ce mois-ci :o
- ne jamais utilisé eof saut si on sait ce que ça fait
while(f >> a) {} au lieu de ton ignoble défaillant boucle.
- faire un clear() avant de réutiliser le fichier.
- a oui, je termine par apprendre le C++ et comprendre qu'on  ne peut pas déclarer deux fois une variable.

Reply

Marsh Posté le 20-04-2004 à 16:24:23    

Merci pour ton aide, ô maitre Taz :o
Euh ceci dit, je me suis apercu en relisant que j'ai recopié le code comme un marsouin aveugle.
Bien sur qu'on peut pas redéclarer une variable...
c'est f.open("xxx",XXX) que j'ai dans mon code...
[meme si ca sert à rien, j'ai modifié pour les archives ^^']


Message édité par moimoi7 le 20-04-2004 à 16:29:36
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed