Taille de fichiers

Résolu
Screderman Messages postés 6 Date d'inscription lundi 8 mars 2004 Statut Membre Dernière intervention 21 décembre 2004 - 17 déc. 2004 à 15:45
bigbourin Messages postés 64 Date d'inscription lundi 12 avril 2004 Statut Membre Dernière intervention 18 août 2006 - 8 avril 2006 à 21:31
Hello !
Je cherche un moyen ( une fonction ) permettant de trouver la taille d'un fichier afin que je puisse le lire en entier avec ma fonction de lecture fgets(x, TAILLE ???,fichier)

10 réponses

cs_Nebula Messages postés 787 Date d'inscription samedi 8 juin 2002 Statut Membre Dernière intervention 7 juin 2007 2
17 déc. 2004 à 17:43
Je maintiens que c'est une mauvaise solution : il vaut mieux passer par un buffer de quelques Ko que tout lire d'un coup, surtout avec fgets qui est plus orienté fichiers textes...

En plus il semble utiliser le C standard et on lui donne une API Win32...

C standard : tu ouvres ton fichier en mode binaire avec fopen, et tu fais un fseek(f, 0, SEEK_END) et tu récupères la taille de ton fichier avec ftell ensuite. rewind pour revenir au début et tu lis ton fichier tranquille avec fread et ton buffer.
3
cs_Arnotic Messages postés 933 Date d'inscription dimanche 1 avril 2001 Statut Membre Dernière intervention 9 janvier 2012
17 déc. 2004 à 17:26
Salut,

Tu as la fonction des APIs Win32 : GetFileSizeEx()
Voir MSDN pour plus d'infos.

Son prototype :
BOOL GetFileSizeEx(
HANDLE hFile,
PLARGE_INTEGER lpFileSize
);

@+
Arnotic,
Admin CS, MVP Visual C++
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
17 déc. 2004 à 17:51
ftell retourne un long, ça limite serieux a notre epoque.
Devait encore aller au siecle dernier, hein Nebula, qu'en dis-tu ?

ciao...
BruNews, MVP VC++
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
17 déc. 2004 à 18:00
Tu en vois souvent des fichier de plus de 4Go? Ca limite, c'est ca suffit dans la majorité des cas.
0

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

Posez votre question
cs_Nebula Messages postés 787 Date d'inscription samedi 8 juin 2002 Statut Membre Dernière intervention 7 juin 2007 2
17 déc. 2004 à 18:01
Bah, ce que j'en dis... S'il est sous *nix, il aura un entier sur 64 bits. Après sous Windows, évidemment API !

Toujours préciser sur quoi on bosse, on a ainsi plus de chances d'avoir une "bonne" réponse (ou au moins, d'éviter les mauvaises).
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
17 déc. 2004 à 18:07
Un long ferait 64 bits sous unix? Je pensais que la taille d'un long dépendait de l'architecture (intel 32 bits) et pas de l'OS
0
cs_Nebula Messages postés 787 Date d'inscription samedi 8 juin 2002 Statut Membre Dernière intervention 7 juin 2007 2
17 déc. 2004 à 18:23
Ah non c'est ftello qui est compatible avec le 64 bits, je viens de vérifier : http://www.die.net/doc/linux/man/man3/ftello.3.html
0
Gendal67 Messages postés 627 Date d'inscription mercredi 16 juin 2004 Statut Membre Dernière intervention 24 juillet 2011 2
17 déc. 2004 à 22:53
Ben Bru défend son ami...lol....
Le long suffit largement...surtout si tu fais un cast en unsigned long....ac un %u ou %lu pour le recup avec fgetc....enfin, c'est vraiment chercher la ptite bête la...

Gendal67, Dev-C++ 4.9.9.0, J'adore cppfrance!! :-))
0
Screderman Messages postés 6 Date d'inscription lundi 8 mars 2004 Statut Membre Dernière intervention 21 décembre 2004
18 déc. 2004 à 14:52
Merci pour toutes vos reéponse je vais tester ca !
0
bigbourin Messages postés 64 Date d'inscription lundi 12 avril 2004 Statut Membre Dernière intervention 18 août 2006
8 avril 2006 à 21:31
Bonjour a tous, Désolé pour ce décalage temporel ^^ , mais bon voila moi je cherche une fonction qui renvoi la taille d'un fichier mais sous linux, donc les API W32 ... voila je pensait trouver mon bonheur en cherchant un peu, mais sans resultat. Merci d'avances pour vos reponces.

PS : j'utilise une distro Debian et gcc pour compiler sur une archi i386.
0
Rejoignez-nous