Connaitre la taille d un fichier en entrée standard

adakick Messages postés 68 Date d'inscription vendredi 21 janvier 2005 Statut Membre Dernière intervention 5 octobre 2009 - 22 oct. 2006 à 23:31
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 - 23 oct. 2006 à 21:32
<!-- / 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

yann_lo_san Messages postés 1137 Date d'inscription lundi 17 novembre 2003 Statut Membre Dernière intervention 23 janvier 2016 26
23 oct. 2006 à 00:30
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...
0
DeAtHCrAsH Messages postés 2670 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 6 février 2013
23 oct. 2006 à 11:04
Lecture octet par octet ...Ca risque de données ca!!!

Shell
0
yann_lo_san Messages postés 1137 Date d'inscription lundi 17 novembre 2003 Statut Membre Dernière intervention 23 janvier 2016 26
23 oct. 2006 à 13:24
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....
0
adakick Messages postés 68 Date d'inscription vendredi 21 janvier 2005 Statut Membre Dernière intervention 5 octobre 2009
23 oct. 2006 à 16:08
Mais comment connaitre le nombre de ligne d un fichier en entrée standard ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
adakick Messages postés 68 Date d'inscription vendredi 21 janvier 2005 Statut Membre Dernière intervention 5 octobre 2009
23 oct. 2006 à 17:28
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
0
DeAtHCrAsH Messages postés 2670 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 6 février 2013
23 oct. 2006 à 19:45
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!
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
23 oct. 2006 à 21:32
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++
0
Rejoignez-nous