[c++] Lire un fichier <== simple pour vous, moa j'ai du mal lol

Lire un fichier <== simple pour vous, moa j'ai du mal lol [c++] - C++ - Programmation

Marsh Posté le 24-07-2003 à 00:26:57    

#include <fstream>
 #include <iostream>
 
  using namespace std;
   
  int main()
  {
      char fileName[80]="fic.txt";
      char buffer[255];
   char buffer2[255];
 
     ifstream fin(fileName);
 
  while(fin.getline(buffer,255))
   cout << buffer << endl;
 
 fin.seekg (0, ios::beg); //je pensais ke ça me permettrais de retourner au début du fichier !!
 
 if(fin.eof())
  cout << "fin de fichier";
 
  while(fin.get(buffer2,255))
   cout << buffer2 << endl;
 
 return 0;
  }
 
Voici mon code, je voudrais simplement lire deux fois de suite le contenu d'un fichier texte, rien de bien extraordinaire mais je n'y arrive pas.
 
Please help ;)

Reply

Marsh Posté le 24-07-2003 à 00:26:57   

Reply

Marsh Posté le 24-07-2003 à 00:35:30    

1) utilise les std::string et la fonction associée
getline(istream&, string& )
 
2) sinon ton code me parait OK... quel est le problème?

Reply

Marsh Posté le 24-07-2003 à 00:38:19    

Sorry le problème c'est kil n'affiche le contenu du fichier qu'une seule fois ensuite il m'affiche "fin de fichier" du coup je kroa ke c'est pour ça kil ne rentre pas dans ma seconde boucle !!

Reply

Marsh Posté le 24-07-2003 à 00:54:10    

ah oui, merde, j'avais pas vu. quand tu arrives en fin de fichier, le flag eof est positionné. donc il faut remettre les ardoises à zéro avec ::clear()
 

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. }


 
edit: petite amélioration


Message édité par Taz le 24-07-2003 à 01:10:56
Reply

Marsh Posté le 24-07-2003 à 01:17:11    

Merci bcp, je débute en C++ et je bute sur des problèmes relativement faciles !! Enfin, voilà j'ai compris et c'est l'essentiel !! Encore merci d'avoir répondu si vite !!  :jap:

Reply

Marsh Posté le 24-07-2003 à 09:25:01    

si tu debutes c'est pas mal t'en est deja a la gestion de fichiers :) .
Moi je debute et j'en suis qu'aux pointeurs et tout  :)


---------------
Human Forever
Reply

Marsh Posté le 24-07-2003 à 11:17:56    

++Taz a écrit :

ah oui, merde, j'avais pas vu. quand tu arrives en fin de fichier, le flag eof est positionné. donc il faut remettre les ardoises à zéro avec ::clear()


 
Le clear, mais voilà ce qui m'échappe depuis si longtemps, je vais peut être finir par les aimer ces fstream (en même temps on pourrait s'attendre à ce que seek enlève le flag eof quand on retourne au début du fichier).


Message édité par LetoII le 24-07-2003 à 11:18:14

---------------
Le Tyran
Reply

Marsh Posté le 24-07-2003 à 11:21:42    

VisualC_n3T a écrit :

si tu debutes c'est pas mal t'en est deja a la gestion de fichiers :) .
Moi je debute et j'en suis qu'aux pointeurs et tout  :)  


bè c'est le langage C++ ke je ne connais pas, mais j'ai de bonnes notions en programmation objets et en algorythmique. Cependant je te rassure, je galère grave quand même lol

Reply

Marsh Posté le 24-07-2003 à 11:23:11    

LetoII a écrit :


 
Le clear, mais voilà ce qui m'échappe depuis si longtemps, je vais peut être finir par les aimer ces fstream (en même temps on pourrait s'attendre à ce que seek enlève le flag eof quand on retourne au début du fichier).


J'ai eu la même réflexion  :D

Reply

Sujets relatifs:

Leave a Replay

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