récupérer la taille d'un fichier en C - Programmation
Marsh Posté le 12-03-2001 à 01:29:48
j'ai pas bien en tete le nom des fonctions mais il faut se positionner à la fin du fichier (fseek) et regarder à quel endroit du fichier on est.
Marsh Posté le 12-03-2001 à 09:43:39
fd=fopen("fichier","r" );
//toutes tes vérifications
fseek(0,SEEK_END);
unsigned long int = ftell(fd);
//c'est fini ici
Marsh Posté le 12-03-2001 à 10:43:02
il y a aussi les fonctions de API windows (si tu es sous windows bien sur).
);
GetFileInformationByHandle
http://msdn.microsoft.com/library/ [...] o_2jtx.htm
Marsh Posté le 12-03-2001 à 15:14:20
Sous linux il y a stat et fstat qui remplisse une structure avec des info sur le fichier.
Mais j'ai plus le header et la syntaxe en tête.
Marsh Posté le 12-03-2001 à 16:04:10
thanks
je suis sous linux, je m'en vais de ce pas tester tout ça !!!!
Marsh Posté le 13-03-2001 à 00:15:18
Oui, stat, c'est la maniere classique.
Parce que bon, fd=fopen("fichier","r" ); ouvrir (et lire?) le fichier juste pour savoir sa taille, c'est pas trop optimal.
A+,
Marsh Posté le 13-03-2001 à 03:29:24
Je te le fé sous forme de fonction pour que ce soit plus claire :
#include <stdio.h>
#include <stdlib.h>
#include <sys/stat.h>
long file_size(const char *filename)
{
struct stat s;
if (stat(filename,&s) != 0) {
printf("error!\n" );
return 0;
}
return s.st_size;
}
C'est pas la méthode propre, te reste plus qu'a adapter.
Marsh Posté le 13-03-2001 à 08:00:07
gilou a écrit a écrit : Oui, stat, c'est la maniere classique. Parce que bon, fd=fopen("fichier","r" ); ouvrir (et lire?) le fichier juste pour savoir sa taille, c'est pas trop optimal. A+, |
C'est une méthode générique qui passe sous tous les OS, il a dit qu'il cherchait à optimiser qqchose ???
Marsh Posté le 13-03-2001 à 08:44:49
>C'est une méthode générique qui passe sous tous les OS
Ta methode marche pas si tu as pas le droit en lecture sur le fichier. stat marche a partir du moment ou tu as le droit d'acces sur le repertoire il me semble.
A+,
Marsh Posté le 13-03-2001 à 08:56:08
Le code de KarlKox s'ecrirait sous windows:
(la difference essentielle: stat prend un underscore, et l'inclusion de types.h avant stat.h est necessaire).
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
long file_size(const char *filename)
{
struct _stat s;
if (_stat(filename,&s) != 0) {
printf("error!\n" );
return 0;
}
return s.st_size;
}
Si ton prog travaille en unicode natif interne, il y a _wstat,
(qui attends alors le nom de fichier en wchar_t* et non plus en char*) ainsi que _stati64 et _wstati64 si tu bosses en 64 bits...
A+,
Marsh Posté le 12-03-2001 à 00:39:18
je suis en train de faire un petit compresseur et je voudrais améliorer un peu mon code, vu qu'il faut forcément parcourir le fichier source, pour l'instant j'incrémente un compteur à chaque avancée dans la lecture, mais j'aimerais pouvoir me passer de cet artifice, alors comment récupérer directement la taille d'un fichier en C?