[C] Comment calculer la taille d'un fichier??

Comment calculer la taille d'un fichier?? [C] - C++ - Programmation

Marsh Posté le 16-03-2003 à 22:07:19    

J'ai ces deux fonctions mais aucunes des deux ne fonctionnent...
 
La 1ere...

Code :
  1. long calcul_taille(FILE * file)
  2. {
  3. float count=0;
  4. unsigned char n;
  5. while(!feof(file))
  6. {
  7. fread(&n,sizeof(unsigned char),1,file);
  8. count++;
  9. }
  10. return count;
  11. }


 
La 2e...

Code :
  1. long calcul_taille(FILE * file)
  2. {
  3. fseek(file,0,SEEK_END);
  4. return ftell(file);
  5. }


 
Merci de m'aider :)

Reply

Marsh Posté le 16-03-2003 à 22:07:19   

Reply

Marsh Posté le 16-03-2003 à 22:31:16    

Tu as déjà stat qui te fait ça dans le monde Unix si ça peut t'aider, à moins que tu veuilles le faire toi même :)
 

Code :
  1. #include <sys/stat.h>
  2. #include <unistd.h>
  3. int stat(const char *file_name, struct stat *buf);
  4. int fstat(int filedes, struct stat *buf);
  5. int lstat(const char *file_name, struct stat *buf);
  6. struct stat
  7.               {
  8.                   dev_t         st_dev;     
  9.                   ino_t         st_ino;     
  10.                   mode_t        st_mode;   
  11.                   nlink_t       st_nlink;   
  12.                   uid_t         st_uid;     
  13.                   gid_t         st_gid;     
  14.                   dev_t         st_rdev;   
  15.                   off_t         st_size;     // taille du fichier
  16.                   unsigned long st_blksize; 
  17.                   unsigned long st_blocks; 
  18.                   time_t        st_atime;   
  19.                   time_t        st_mtime;   
  20.                   time_t        st_ctime;   
  21.               };


Message édité par robbystar le 16-03-2003 à 22:33:32
Reply

Marsh Posté le 16-03-2003 à 22:45:55    

pas le premier: feof est mal utilisé, ca ne fonctionnera pas. le fait d'utiliser un float va tout perturber. l'epsilon float n'est pas egal à l'int 1, donc le pas n'est pas valide. fread, pourquoi aps fgetc? le resultat variera selon que le fichier est binaire ou texte.
 
la deuxieme solution est un peut mieux: mais il vaudrait mieux sauvegarder le pointeur puis le restaurer afin de ne pas perdre la position courante. voir fgetpos/fsetpos
 
le mieux est de se tourner vers son systeme. *stat marchent au poil

Reply

Marsh Posté le 16-03-2003 à 23:01:09    

Merci beaucoup ca fonctionne :)


Message édité par *LighTninG* le 16-03-2003 à 23:04:51
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed