Lecture d'un fichier texte en boucle C++

Lecture d'un fichier texte en boucle C++ - C++ - Programmation

Marsh Posté le 02-12-2005 à 11:47:14    

Salut,
 
Je cherche a lire des valeurs dans un fichier texte en boucle.
Je ne souhaite pas m'arreter a la fin du fichier mais reboucler au debut a l'infini...
 
Voici mon code utilise pour lire :

Code :
  1. char number[256];
  2. ifstream ifstr("file.txt" );
  3. while(!ifstr.eof()){//ici je m'arrete a la fin du fichier...
  4.                          //lecture d'une ligne
  5.  ifstr.getline(number, 256, '\n');
  6.  cout << number << endl;
  7. }


 
Comment puis je m'y prendre?
 
Merci

Reply

Marsh Posté le 02-12-2005 à 11:47:14   

Reply

Marsh Posté le 02-12-2005 à 11:59:46    

bien c'est pas compliqué (si j'ai bien compris)
au lieu d'arreter de lire a la fin du fichier tu retourne au debut du fichier

Code :
  1. char number[256];
  2. ifstream ifstr("file.txt" );
  3. while(1){//ici je m'arrete a la fin du fichier...
  4.                          //lecture d'une ligne
  5.                           if(!ifstr.eof())
  6.                           {
  7.                             ifstr.fseek(SEEK_SET); //attention fonction retrouver de memoire à verifier  
  8.                           }
  9.  ifstr.getline(number, 256, '\n');
  10.  cout << number << endl;
  11. }


 
a toi de voir quand tu veux arreter car la tu tourne vraiment en boucle infinie

Reply

Marsh Posté le 02-12-2005 à 12:37:24    

minable.
 

Code :
  1. #include <string>
  2. #include <iostream>
  3. #include <fstream>
  4. int main(int argc, char **argv)
  5. {
  6.   if (argc != 2)
  7.     return 1;
  8.   std::ifstream input(argv[1]);
  9.   if (not input.is_open())
  10.     return 2;
  11.   for (unsigned i = 0; i < 3; ++i) {
  12.     std::string line;
  13.     while (std::getline(input, line)) {
  14.       std::cout << i << '\t' << line << '\n';
  15.     }
  16.     if (input.bad())
  17.       return 3;
  18.     input.clear();
  19.     input.seekg(0, std::ios_base::beg);
  20.   }
  21. }


 
 
cela dit, sauf gros fichier, il vaudrait mieux ne lire qu'une seule fois.

Reply

Marsh Posté le 02-12-2005 à 14:13:40    

Merci pour vos reponses.
La solution de taz fonctionne.
 
A+

Reply

Marsh Posté le 27-12-2005 à 16:59:54    

Taz a écrit :

minable.
 

Code :
  1. #include <string>
  2. #include <iostream>
  3. #include <fstream>
  4. int main(int argc, char **argv)
  5. {
  6.   if (argc != 2)
  7.     return 1;
  8.   std::ifstream input(argv[1]);
  9.   if (not input.is_open())
  10.     return 2;
  11.   for (unsigned i = 0; i < 3; ++i) {
  12.     std::string line;
  13.     while (std::getline(input, line)) {
  14.       std::cout << i << '\t' << line << '\n';
  15.     }
  16.     if (input.bad())
  17.       return 3;
  18.     input.clear();
  19.     input.seekg(0, std::ios_base::beg);
  20.   }
  21. }


 
 
cela dit, sauf gros fichier, il vaudrait mieux ne lire qu'une seule fois.


Reply

Sujets relatifs:

Leave a Replay

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