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

  FORUM HardWare.fr
  Programmation

  récupérer la taille d'un fichier en C

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

récupérer la taille d'un fichier en C

n°18146
oh_damned
Posté le 12-03-2001 à 00:39:18  profilanswer
 

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?

mood
Publicité
Posté le 12-03-2001 à 00:39:18  profilanswer
 

n°18152
wave
Posté le 12-03-2001 à 01:29:48  profilanswer
 

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.

n°18167
zop
1 world, 1 web, 1 Windows
Posté le 12-03-2001 à 09:43:39  profilanswer
 

fd=fopen("fichier","r" );
//toutes tes vérifications
fseek(0,SEEK_END);
unsigned long int = ftell(fd);
 
//c'est fini ici :D

n°18175
darkoli
Le Petit Dinosaure Bleu
Posté le 12-03-2001 à 10:43:02  profilanswer
 

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

n°18232
Roswell_
Posté le 12-03-2001 à 15:14:20  profilanswer
 

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.


---------------
http://www.cheata.net le site qui vous donne la banane!
n°18247
oh_damned
Posté le 12-03-2001 à 16:04:10  profilanswer
 

thanks
je suis sous linux, je m'en vais de ce pas tester tout ça !!!!

n°18300
gilou
Modérateur
Modzilla
Posté le 13-03-2001 à 00:15:18  profilanswer
 

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+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°18310
karlkox
Posté le 13-03-2001 à 03:29:24  profilanswer
 

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.

n°18314
zop
1 world, 1 web, 1 Windows
Posté le 13-03-2001 à 08:00:07  profilanswer
 

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

n°18316
gilou
Modérateur
Modzilla
Posté le 13-03-2001 à 08:44:49  profilanswer
 

>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+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
mood
Publicité
Posté le 13-03-2001 à 08:44:49  profilanswer
 

n°18318
gilou
Modérateur
Modzilla
Posté le 13-03-2001 à 08:56:08  profilanswer
 

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+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  récupérer la taille d'un fichier en C

 

Sujets relatifs
[C] ecrire un tableau[N][N] en binaire dans un fichier[PHP3 débutant] RAZ d'un fichier texte - formatage de variables.
Y'a pas 1 commande DOS qui me permettrait de couper mon fichier ??[JAVA] lire les donnes d'un fichier text
[ASP] Recuperer le nom d`un bouton de formulaire du type SUBMIT[PHP] traitement fichier texte II, le retour
Creation Fichier en C++Comment sauvegarder une macro Excel dans un fichier *.xla ???
au fait, comment on peut récuperer une variable javascript en asp ?[PHP] traitement d'un fichier texte a tabulation
Plus de sujets relatifs à : récupérer la taille d'un fichier en C


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR