Connaitre la taille d un fichier en entrée standard

Signaler
Messages postés
68
Date d'inscription
vendredi 21 janvier 2005
Statut
Membre
Dernière intervention
5 octobre 2009
-
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
-
<!-- / icon and title -->
<!-- message -->

Bonjour, je voulais savoir comment on fesait pour connaitre la taille d un fichier sur entrée standard ?

Et comment récupere tout les texte contenu dedans ?


Merci.

7 réponses

Messages postés
1137
Date d'inscription
lundi 17 novembre 2003
Statut
Membre
Dernière intervention
23 janvier 2016
21
Il y a plein de façon de faire :

// C++
ifstream fic("data.dat");
BYTE octet;
fic.get(octet);
while( !fic.eof() )
{
   cout << octet;
   fic.get(octet);
}
fic.close;

// taille fichier en C
if( (fh = _open("data", _O_RDWR | _O_CREAT, _S_IREAD | _S_IWRITE ))  != -1 )
      printf( "taille fichier : %ld\n", _filelength( fh ) );




// Win32
handle = CreateFile()
closeHandle(handle)


// C
FILE* fp = fopen()
fread(), fget(), ect...
fclose();


// MFC
CFile f(...);
f.read();
f.close;


// ou
CStdioFile


// ect...
Messages postés
2671
Date d'inscription
vendredi 25 janvier 2002
Statut
Membre
Dernière intervention
6 février 2013
2
Lecture octet par octet ...Ca risque de données ca!!!

Shell
Messages postés
1137
Date d'inscription
lundi 17 novembre 2003
Statut
Membre
Dernière intervention
23 janvier 2016
21
On est pas là pour donner du code clef en main ! Ici on donne des pistes, et à la place de commentaires sans interets on donne quelques indications....
Messages postés
68
Date d'inscription
vendredi 21 janvier 2005
Statut
Membre
Dernière intervention
5 octobre 2009

Mais comment connaitre le nombre de ligne d un fichier en entrée standard ?
Messages postés
68
Date d'inscription
vendredi 21 janvier 2005
Statut
Membre
Dernière intervention
5 octobre 2009

J'ai deux valeure par ligne, séparer par un espace, je voudrait comparer
a chaque fois les infos que je trouve sur lentrée standard

Voici mon code... Sa ne fonctionne pas !


#include

#include <string>


int main(void){

std::string adresse;

std::string num;

while(std::getline()){

//ici j aimerai affecter la premier valeure a une variable(adresse) et la seconde valeure a l autre variable(num)

}

return 0;

}


Merci
Messages postés
2671
Date d'inscription
vendredi 25 janvier 2002
Statut
Membre
Dernière intervention
6 février 2013
2
yann_lo_san> On donne des pistes ? Si c'est pour donner ce genre de piste autant s'abstenir. Et comme tu dis mes commentaires sans interet sont la pour eviter de diffuser des énormités!

Shell

P.S : Si j'etais un passant j'éviterai de te demander mon chemin.
"Bon alors madame vous prenez le Bus 4, puis le Tramway A, puis ...."
-> Moralité : A la fin de la journée le piéton a les memes molets que Stalone!
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
27
Un fichier s'aspire dans un buffer en boucles par passes de 64 Ko mini et on parcourt le buffer avec des pointeurs. A chaque '\n' rencontré, il y a fin de ligne.
C'est bien clair que ce n'est pas avec des std::string et autres std::getline() que tu apprendras à faire un code performant.

Va voir ici:
http://www.cppfrance.com/code.aspx?id=25258
http://www.cppfrance.com/code.aspx?ID=33730
comment on parse les fichiers de manière efficace.

ciao...
BruNews, MVP VC++