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

  FORUM HardWare.fr
  Programmation
  C++

  problème de lecture de fichier sous vc++ 6

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

problème de lecture de fichier sous vc++ 6

n°170833
os2
Posté le 04-07-2002 à 01:00:48  profilanswer
 

j'ai un problème de lecteure de fichier
 
mon fichier a la forme
 
smith;john;
gagne;eric;
primeau;berthrand;
 
voici mon code
 

Code :
  1. std::vector<Client> vClient;
  2. vClient;
  3. Client client;
  4. char tmp[30];
  5. int notmp;
  6. ifstream infile ("client.dat", ios::in);
  7. if (infile)
  8. {
  9.   while(! infile.eof())
  10.   {
  11.     infile>>tmp;
  12.     client.setnom(tmp);
  13.     infile>>";";
  14.     infile>>tmp;
  15.     client.setprenom(tmp);
  16.     infile>>";";
  17.    
  18.     infile>>"\n";
  19.     vClient.push_back(client);
  20.   }
  21. }
  22. infile.close();


Message édité par os2 le 04-07-2002 à 01:31:31

---------------
Borland rulez: http://pages.infinit.net/borland
mood
Publicité
Posté le 04-07-2002 à 01:00:48  profilanswer
 

n°170860
LetoII
Le dormeur doit se réveiller
Posté le 04-07-2002 à 08:17:51  profilanswer
 

Code :
  1. std::vector<Client> vClient;
  2. vClient;
  3. Client client;
  4. char tmp[30];
  5. int notmp;
  6. ifstream infile ("client.dat", ios::in);
  7. if (infile.is_open()
  8. {
  9. infile.getline(tmp,30);//Effectuer au moin une lecture avant de tester eof
  10. while(! infile.eof())
  11. {
  12.    char *field = strtok(tmp,";" );//premier champ
  13.    client.setnom(field );
  14.    field = strtok(0,";" );//deuxiemechamp
  15.    client.setprenom(field );
  16.      
  17.    vClient.push_back(client);
  18.    infile.getline(tmp,30);
  19. }
  20. }
  21. infile.close();


---------------
Le Tyran
n°171319
os2
Posté le 04-07-2002 à 16:25:44  profilanswer
 

sin on a plus de deux champs on fait quoi?
 
car faire
field = strtok(1,";" );
 
ça ne fonctionne pas


---------------
Borland rulez: http://pages.infinit.net/borland
n°171327
LetoII
Le dormeur doit se réveiller
Posté le 04-07-2002 à 16:33:43  profilanswer
 

Regarde la description de strtok...
 
strtok(chaine,delimiteur) initialise le parcour et renvois le premier champs.
strtok(0,delimiteur)      renvoi le champ suivant.
 
Tu appel donc strtok(0,delimiteur) jusqu'à ce que tu ai fait tous te champs
 


---------------
Le Tyran
n°171354
os2
Posté le 04-07-2002 à 17:20:12  profilanswer
 

j'ai ce que j'avais tenté mais j'ai eu des erreurs
 
j'ai tenté une autre voi
voici le code

Code :
  1. #include <fstream.h>
  2. int main()
  3. {
  4. char nom[30];
  5. char prenom[30];
  6. char telephone[30];
  7. char adresse[40];
  8. char ville[30];
  9. char codepostal[7];
  10. char province[4];
  11. int age;
  12. char no_carte[30];
  13. ifstream infile ("client.dat", ios::in);
  14. infile>>nom; //plante ici
  15. cout<<nom;
  16. infile>>";";
  17. infile>>prenom>>";";
  18. infile>>telephone>>";";
  19. infile>>adresse>>";";
  20. infile>>ville>>";";
  21. infile>>codepostal>>";";
  22. infile>>province>>";";
  23. infile>>age>>";";
  24. infile>>no_carte>>";";
  25. infile>>"\n";
  26. return 1;
  27. }


 
et mon fichier contient
 
marc;collin;4406477228;946 roule;vaudreuil;j1j1r5;qc;14;allo;
roger;dumais;5413432128;115 dumahel;montreal;h3b1r8;qc;23;nanane;
 
 
pourtant je crois bien que ça devrait marché
 
quelqu''un sait pourquoi ça fonctionne pas?


Message édité par os2 le 04-07-2002 à 23:01:40

---------------
Borland rulez: http://pages.infinit.net/borland
n°171499
os2
Posté le 04-07-2002 à 23:03:32  profilanswer
 

:bounce:  :bounce:  :bounce:  :bounce:  :bounce:  :bounce:  :bounce:  :bounce:  :bounce:  :bounce:  :bounce:  :bounce:  :bounce:


---------------
Borland rulez: http://pages.infinit.net/borland
n°171579
LetoII
Le dormeur doit se réveiller
Posté le 05-07-2002 à 08:16:53  profilanswer
 

os2 a écrit a écrit :

j'ai ce que j'avais tenté mais j'ai eu des erreurs
 
j'ai tenté une autre voi
voici le code

Code :
  1. #include <fstream.h>
  2. int main()
  3. {
  4. char nom[30];
  5. char prenom[30];
  6. char telephone[30];
  7. char adresse[40];
  8. char ville[30];
  9. char codepostal[7];
  10. char province[4];
  11. int age;
  12. char no_carte[30];
  13. ifstream infile ("client.dat", ios::in);
  14. infile>>nom; //plante ici
  15. cout<<nom;
  16. infile>>";";
  17. infile>>prenom>>";";
  18. infile>>telephone>>";";
  19. infile>>adresse>>";";
  20. infile>>ville>>";";
  21. infile>>codepostal>>";";
  22. infile>>province>>";";
  23. infile>>age>>";";
  24. infile>>no_carte>>";";
  25. infile>>"\n";
  26. return 1;
  27. }


 
et mon fichier contient
 
marc;collin;4406477228;946 roule;vaudreuil;j1j1r5;qc;14;allo;
roger;dumais;5413432128;115 dumahel;montreal;h3b1r8;qc;23;nanane;
 
 
pourtant je crois bien que ça devrait marché
 
quelqu''un sait pourquoi ça fonctionne pas?




 
Normal, pas assez d'espace dans nom pour chopper toute la ligne


---------------
Le Tyran
n°172150
os2
Posté le 05-07-2002 à 20:42:09  profilanswer
 

finalement j'utilise des getline
mais j'ai remarqué des anomalies quand je lis le fichier ayant
 
marc;collin;450667228;606 roule;hongueuil;r4r1t5;qc;141202;allo;
 
infile.getline(nom,30,';';);          //char nom[30]
infile.getline(prenom,30,';';);       //char prenom[30]
infile.getline(telephone,12,';';);    //char telephone[12]
infile.getline(adresse,40,';';);      //char adresse[40]
infile.getline(ville,30,';';);        //char ville[30]
infile.getline(codepostal,7,';';);    //char codepostal[7]  
infile.getline(province,3,';';);      //char province[3]  
infile.getline(datenaissance,7,';';); //char datenaissance[7]
infile.getline(no_carte,30,';';);     //char no_carte[30]
 
au début j'avais telephone à 11 mais si je ne le mais pas à 12
rien n'est mis dans adresse
le contenu qu'il devrait avoir va dans ville
 
quand je le met à 12 lorsque je list province, il y a rien
son contenu est mis dans datenaissance...
 
il y aussi un décalage..... il doit avoir quelques chose que j'ai pas compris là, c'est certain :)


---------------
Borland rulez: http://pages.infinit.net/borland

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

  problème de lecture de fichier sous vc++ 6

 

Sujets relatifs
créer un fichier a chaque fois[PHP] Inclure le contenu d'un fichier dans une variable ?
contenu d'un fichier DBF dans une TListe[HTML] Problème de bordure sur un tableau (vite résolu :))
[SQL server + php] Problème caratèreHTML - JAVASCRIPT : Ptit problème de syntaxe
[SQL] probleme sous phpmyadmin[ Awk, Gawk, Nawk ] problème de flux sur fichier
[Langage perso] Probleme de syntaxe.[C] problème de lecture de caractères dans un fichier
Plus de sujets relatifs à : problème de lecture de fichier sous vc++ 6


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