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

 


Dernière réponse
Sujet : récupérer la taille d'un fichier en C
gilou 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+,

Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
gilou 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+,
gilou >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+,
zop

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 ???

karlkox 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.
gilou 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+,
oh_damned thanks
je suis sous linux, je m'en vais de ce pas tester tout ça !!!!
Roswell_ 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.
darkoli 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
zop fd=fopen("fichier","r" );
//toutes tes vérifications
fseek(0,SEEK_END);
unsigned long int = ftell(fd);
 
//c'est fini ici :D
wave 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.
oh_damned 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?

Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)