Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1533 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  lire dans un fichier texte

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

lire dans un fichier texte

n°161517
mik38
Posté le 18-06-2002 à 09:50:08  profilanswer
 

Bonjour,
 
j'aimerais lire dans un fichier texte et remplir un tableau de structure avec chaque ligne de ce fichier. Ci dessous le n'importe quoi que j'ai tenté (copier/coller maladroit de l'écriture dans le fichier) :heink:  
 
  FILE *f;
  if ((f=fopen("D:\fichier.txt","rt" ))==NULL)
    throw Sysutils::Exception("Impossible de lire le fichier" );
 
  while (!eof)
  {
    fprintf(f,"%s",(Tab[i].Nom + "\n" + Tab[i].Prenom + "\n" + Tab[i].Tel + "\n\n" ));
  i++;
  }
 
  fclose(f);
 
Le fichier texte ressemble à ça:  
nom
prenom
tel
 
nom
prenom
tel
 
etc...
 
Merci d'aider un débutant qui passe l'exam demain...  :pt1cable:

mood
Publicité
Posté le 18-06-2002 à 09:50:08  profilanswer
 

n°161523
LetoII
Le dormeur doit se réveiller
Posté le 18-06-2002 à 10:02:41  profilanswer
 

mik38 a écrit a écrit :

Bonjour,
 
j'aimerais lire dans un fichier texte et remplir un tableau de structure avec chaque ligne de ce fichier. Ci dessous le n'importe quoi que j'ai tenté (copier/coller maladroit de l'écriture dans le fichier) :heink:  
 
  FILE *f;
  if ((f=fopen("D:\fichier.txt","rt" ))==NULL)
    throw Sysutils::Exception("Impossible de lire le fichier" );
 
  while (!eof)
  {
    fprintf(f,"%s",(Tab[i].Nom + "\n" + Tab[i].Prenom + "\n" + Tab[i].Tel + "\n\n" ));
  i++;
  }
 
  fclose(f);
 
Le fichier texte ressemble à ça:  
nom
prenom
tel
 
nom
prenom
tel
 
etc...
 
Merci d'aider un débutant qui passe l'exam demain...  :pt1cable:  




Effectivement c'est n'importe quoi, bon alors regarde du côté des objet fstream (puisque apparement tu essaye de faire ça en C++).
Âller un petit exemple pour la route:
 

Code :
  1. #include <fstream>
  2. #include <string>
  3. using namespace std;
  4. int main(int,char**)
  5. {
  6.   ifstream file("D:\\fichier.txt",io_base::in); //ouvre le fichier.
  7.   string nom;
  8.   file >> nom; //lit une entrée
  9.   cout << nom; //pour voir le truc
  10.   file.close(); // ferme le fichier     
  11. }


Message édité par LetoII le 18-06-2002 à 10:02:54

---------------
Le Tyran
n°161528
mik38
Posté le 18-06-2002 à 10:10:48  profilanswer
 

pourquoi je ne peux pas le faire avec fopen?  :??:

n°161530
LetoII
Le dormeur doit se réveiller
Posté le 18-06-2002 à 10:17:26  profilanswer
 

Ben tu peux mais bon autant faire quelquechose d'homogène, tout en C ou tout en C++.
 

Code :
  1. #include <stdio.h>
  2. int main()
  3. {
  4.   int   retval;
  5.   FILE *file = fopen("fichier.txt","r" );
  6.   if(file)
  7.    {
  8.      char nom[512];
  9.      fgets(nom,512,file);
  10.      puts(nom);
  11.      retval = 0;
  12.    }
  13.   else
  14.    {
  15.      retval = -1;
  16.    }
  17.   return retval;
  18. }


---------------
Le Tyran
n°161531
mik38
Posté le 18-06-2002 à 10:28:03  profilanswer
 

Si je comprend bien fopen c'est du C et ta permiere solution du  
C++. :heink:  
Merci pour ton exemple mais comment parcourir tout le fichier jusqu'a la fin et remplir mon tableau de structure?
(en sachant qu'il y a une ligne de saute entre les differents enregistrements)  :??:

n°161550
Moriaben
Posté le 18-06-2002 à 10:48:16  profilanswer
 

tu as le choix de format pour le fichier txt ?
 
style:
nom,prenom,tel
nom,prenom,tel
 
 
etc..

n°161560
LetoII
Le dormeur doit se réveiller
Posté le 18-06-2002 à 10:53:31  profilanswer
 

Cherche du côté de strtok (string.h)


---------------
Le Tyran
n°161743
mik38
Posté le 18-06-2002 à 14:17:28  profilanswer
 

Il faut que je fasse simple, fprintf marchait mais fscanf me fait une violation d'accès  :fou:  
Please help me.. :pt1cable:  
 
[cpp]  FILE *f;
  if ((f=fopen("Liste Generale.txt","r+" ))==NULL)
    throw Sysutils::Exception("Impossible de lire le fichier" );
 
  while (!feof())
  {
    fscanf(f,"%s",Tab[i].Nom);
    i++;
  }
  fclose(f);

n°161846
paranoidan​droid
Posté le 18-06-2002 à 15:40:16  profilanswer
 

...


Message édité par paranoidandroid le 18-06-2002 à 15:44:45
n°161857
paranoidan​droid
Posté le 18-06-2002 à 15:44:29  profilanswer
 

Je voulais poster un noiuveau message ... j'ai répondu a celui ci ..
 
désolé

mood
Publicité
Posté le 18-06-2002 à 15:44:29  profilanswer
 

n°161894
El_gringo
Posté le 18-06-2002 à 16:10:20  profilanswer
 

mik38 a écrit a écrit :

Il faut que je fasse simple, fprintf marchait mais fscanf me fait une violation d'accès  :fou:  
Please help me.. :pt1cable:  
 

Code :
  1. FILE *f;
  2.   if ((f=fopen("Liste Generale.txt","r+" ))==NULL)
  3.     throw Sysutils::Exception("Impossible de lire le fichier" );
  4.   while (!feof())
  5.   {
  6.     fscanf(f,"%s",Tab[i].Nom);
  7.     i++;
  8.   }
  9.   fclose(f);






 

Code :
  1. FILE *f;
  2.   if ((f=fopen ("Liste Generale.txt","r+" ))==NULL)
  3.     throw Sysutils::Exception("Impossible de lire le fichier" );
  4.   fseek (f, 0, SEEK_SET)   // place le pointeur de fichier au début du fichier
  5.   while (!feof ())
  6.   {
  7.     // avec le &, ça ira mieux !
  8.     fscanf (f,"%s",&Tab[i].Nom);
  9.     //vide le buffer d'entrée
  10.     fflush ();
  11.     // déplacement du pointeur de fichier, sinon, tu liras toujours la même chose
  12.     fseek (f, sizeof (Tab[i].Nom), SEEK_CUR);
  13.     i++;
  14.   }
  15.   fclose(f);


Message édité par El_gringo le 18-06-2002 à 16:19:05
n°161940
LetoII
Le dormeur doit se réveiller
Posté le 18-06-2002 à 16:31:40  profilanswer
 

Inutile le fseek, c'est automatique avec le fscanf (qui est pas l'idéale d'ailleur mieux vaut fgets dans ce cas là)


---------------
Le Tyran
n°161949
El_gringo
Posté le 18-06-2002 à 16:36:42  profilanswer
 

letoII a écrit a écrit :

Inutile le fseek, c'est automatique avec le fscanf (qui est pas l'idéale d'ailleur mieux vaut fgets dans ce cas là)  




 
j'utilise tjs les fonction de l'API Win32 moi pr lire les fichiers.
le fscanf, il fait un fseek comme je l'ai fait ? (il déplace du nombre de bytes lues ?)

n°161952
LetoII
Le dormeur doit se réveiller
Posté le 18-06-2002 à 16:37:56  profilanswer
 

Oui, toutes les fonctions de lecture du c font avancer la position sur le flux.


---------------
Le Tyran
n°162098
Moriaben
Posté le 18-06-2002 à 21:31:49  profilanswer
 

http://www.esiee.fr/~morellea/EXEM [...] opie1.html
 
lis, ça devrait t'aider (c'est mon prof qui nous a donné ça en 1ere année et ça m'avait suffit pour comprendre)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  lire dans un fichier texte

 

Sujets relatifs
Palm fichier .PDB[VB] comment sauvegarder une image dans un fichier
[C] Aide pour creer un nouveau fichier[PHP] - Upload de fichier : recuperation du chemin complet sur mon HD
[Shell] Retirer les retour à la ligne d'un fichier (avec sed ?)[C++] fstream : comment ouvrir, lire, écrire dans un fichier texte !?!
[ALGO] Lire les n dernières lignes d'un fichier texte[PHP] lire un fichier texte et modifier certaines valeurs!!!!
[VB] ou [Delphi] Comment lire un fichier texteASP : Peut-on lire un fichier texte sur un ordinateur client ?
Plus de sujets relatifs à : lire dans un fichier texte


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR