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

  FORUM HardWare.fr
  Programmation

  [c++] parcourir un fichier...

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[c++] parcourir un fichier...

n°83286
art_dupond
je suis neuneu... oui oui !!
Posté le 20-12-2001 à 13:24:38  profilanswer
 

bonjour les gens,  
 
 
pour parcourir un fichier, j'ai fait :
 

Code :
  1. char *str;
  2. ifstream infile("nom_fichier", ios::in);
  3. while(!infile.eof())
  4. {
  5.    infile.getline(str, 80, '\n');
  6.    cout << str;
  7. }

 
 
Ca marche pô :(  
 
(sans le while, ca marche)
 
 
En fait, j'ai un fichier avec des données (de différents types) séparés par des ";" (j'ai vu un topic dessus, mais j'ai pas tout compris :sweat: ).
Est-ce que la méthode getline est appropriée pour récupérer ces données, ou peut-on faire "mieux" autrement ?
 
 
 
Voili, si vous pouviez m'éclairer sur tout ca... :jap:

 

[edtdd]--Message édité par art_dupond--[/edtdd]


---------------
oui oui
mood
Publicité
Posté le 20-12-2001 à 13:24:38  profilanswer
 

n°83429
Carbon_14
Posté le 20-12-2001 à 16:10:03  profilanswer
 

Avant que les spécialistes trouvent une solution, le char *str;  
c'est bien, mais un pointeur ne suffit pas à stocker une chaîne. Faut peut-être réserver de la mémoire, ou faire un char str[81];  
 
Pour le reste, désolé, je ne suis qu'au début de mon livre sur le C++...

n°83525
freewol
Ceci n'est pas une citation
Posté le 20-12-2001 à 19:38:51  profilanswer
 

c 'est incroyable la mise en page de la page "répondre" !!!! Jamais vu ça ... Joce !!! Y a un bug !! Faut le voir pour le croire ...
edit : ça le fait même pour édit ou tout ce qui fait taper un texte ...

 

[edtdd]--Message édité par freewol--[/edtdd]

n°83528
Krueger
tout salaire demande dutravail
Posté le 20-12-2001 à 20:19:03  profilanswer
 

Aïe! :eek:


---------------
"Colère et intolérance sont les ennemis d'une bonne compréhension." Gandhi
n°83933
freewol
Ceci n'est pas une citation
Posté le 23-12-2001 à 08:54:28  profilanswer
 

tiens chelou c'est revenu à la normale ... y se passe vraiment des trucs bizzares ici ...

n°83994
Clarkent
Musclor le shérif de l'espace
Posté le 23-12-2001 à 18:05:55  profilanswer
 

Utilise la fonction stat ou fstat pour pouvoir récupérer la taille du fichier, puis alloue ton pointeur qui te sert de buffer avec la fonction malloc. Tu pourras ainsi copier la totalité de ton fichier dans le tampon.


---------------
"PAR LE POUVOIR DU CRÂNE ANCESTRAL, JE DETIENS LA FORCE TOUTE PUISSANTE".
n°83998
joce
Architecte / Développeur principal
&#034;BugHunter&#034;
Posté le 23-12-2001 à 19:18:19  profilanswer
 

CARBON_14 a écrit a écrit :

Avant que les spécialistes trouvent une solution, le char *str;  
c'est bien, mais un pointeur ne suffit pas à stocker une chaîne. Faut peut-être réserver de la mémoire, ou faire un char str[81];  
 
Pour le reste, désolé, je ne suis qu'au début de mon livre sur le C++...  




t'es sur de ca :heink:
Le C++ alloue pas la mémoire dynamiquement dans ce cas non :??:


---------------
Protèges carnets personnalisés & accessoires pour bébé
n°84401
LeGreg
Posté le 26-12-2001 à 17:12:09  profilanswer
 

joce a écrit a écrit :

 
t'es sur de ca :heink:
Le C++ alloue pas la mémoire dynamiquement dans ce cas non :??:  




 
Argh !
ben non char *, on ne te l'alloue
pas dans ton dos, surtout que ton char * la
il est passe en valeur et pas par reference
(donc getline il aurait du mal a modifier sa valeur pour
y placer un pointeur alloue).
 
La solution c'est soit de definir un char toto[81];
pour pouvoir y caser 80 caracteres (plus le nul terminal)
soit d'utiliser les std::string
(mais c'est plus lourd que le char *).
 
Par ailleurs le comportement de ton appli
n'est pas bien defini :
le getline ne stocke pas le caractere terminal
dans ta chaine, ce qui fait que la sortie
risque d'etre desordonnee (les passages a la ligne
seront bouffes).
 
Si tu veux reprogrammer cat
il vaut peut-etre mieux travailler en mode
binaire et utiliser les fonctions
istream::read et ostream::write..
 
Sinon allouer un tampon de la taille de ton fichier
c'est plutot une mauvaise idee => si ton fichier
fait 1 Go je n'ose pas imaginer..  
pour optimiser les appels systemes, il vaut mieux
travailler avec des tampons de taille
assez importante, la taille optimale
depend evidemment des circonstances,
mais des tampons trop gros provoquent
des rallentissements lies a la gestion
de la memoire et des tampons trop petits
sont inefficaces parce que tu multiplies des appels
systeme pour pas grand chose.
 
A+
LEGREG

 

[edtdd]--Message édité par legreg--[/edtdd]


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

  [c++] parcourir un fichier...

 

Sujets relatifs
[KSH]extraction d'une ligne d'un fichier[ASP] Uploader un fichier d'un client sur un serveur
[C++/MFC]Envoyer un mail avec fichier joint[PHP] le mieux c'est quoi base ou fichier
Slt, comment on fait pour inclure un fichier *.exe dans un fichier C..Exploitation du fichier core
[HTML] Bouton download pour fichier wmv[C++] Peut-on stocker n'importe quelle donnée dans un fichier?
Parcourir un répertoire sur le client dans une page ASPEditeur pour accéder à un fichier distant
Plus de sujets relatifs à : [c++] parcourir un fichier...


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