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

  FORUM HardWare.fr
  Programmation
  C

  calculer la taille d'un fichier texte en C

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

calculer la taille d'un fichier texte en C

n°2258140
qwerty_213
Posté le 15-05-2015 à 01:16:40  profilanswer
 

Bonjour, je suis sous Win7 et je travaille avec Dev-C++,
Je souhaiterai calculer la taille d'un fichier .txt nommé text à l'aide du programme en C ci-dessous (le prgC et le fichier sont dans le même dossier).
Le programme se compile et renvoie TAILLE : -1 au lieu de la vrai taille du fichier (4 096 octets),
Si j’enlève ("main.c" ) à la fin du programme il me renvoie TAILLE : 4199056
qlqn pourrait-il me dire quelle est l'erreur dans ce programme
merci d’avance
------------------------------------------------------  
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
long file_size(char *text)
{
   /*Ouverture du fichier*/
   FILE *file = fopen(text, "r" );
   long ret;
   if(file == NULL)
   {
      return -1;
   }
   /*On place le curseur à la fin*/
   fseek(file, 0, SEEK_END);
   /*On récupére la position courante*/
   ret = ftell(file);
   fclose(file);
   return ret;
}
int main(int argc, char *argv[])
{
  printf("TAILLE : %ld\n", file_size("main.c" ));
  Sleep(2000);
  return 0;
}

mood
Publicité
Posté le 15-05-2015 à 01:16:40  profilanswer
 

n°2258148
rat de com​bat
attention rongeur méchant!
Posté le 15-05-2015 à 13:36:38  profilanswer
 

Citation :

Si j’enlève ("main.c" ) à la fin du programme il me renvoie TAILLE : 4199056


[n-ième edit, j'ai fini par comprendre...]
Si tu mets  

Code :
  1. printf("TAILLE : %ld\n", file_size);


tu n'appelles pas la fonction mais tu recois un pointeur vers cette fonction. Sauf que %ld c'est pas le bon format pour afficher ça et mingw se plaint:

Citation :


main.c|24|warning: format '%ld' expects argument of type 'long int', but argument 2 has type 'long int (*)(char *)' [-Wformat]


Bref, n'importe quoi, faut mettre des parenthèses et un argument correct.
 
Bon, pour le problème en soi chez moi (XP, mingw) ça compile et fonctionne très bien...
 
Si tu recois -1 en retour c'est probablement là

Code :
  1. if(file == NULL)
  2.    {
  3.       return -1;
  4.    }


que ça coince... Rajoute donc un perror("opening file: " ); et regarde ce que ça donne. http://en.cppreference.com/w/c/io/perror
 
edit: 4 096 octets c'est probablement pas la taille réelle mais la taille d'un secteur(?). Sous XP en faisant click droit sur un fichier et propriétés il y a deux infos, taille et taille sur le disque.


Message édité par rat de combat le 15-05-2015 à 13:43:47
n°2258149
rat de com​bat
attention rongeur méchant!
Posté le 15-05-2015 à 13:52:26  profilanswer
 

Au fait, il y a bien un fichier main.c dans ton projet? (et non main.cpp)
 
Quoi qu'il en soit, si tu veux calculer la taille d'un "fichier .txt nommé text" alors il faut indiquer "text.txt" comme argument (plutôt que "main.c"...)


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

  calculer la taille d'un fichier texte en C

 

Sujets relatifs
Calling C++ from C#decoupage d'un fichier CSV
Cacher un texte dans une imageVoir/Editer un fichier .bat
supprimer la premiere ligne d'un fichierRequête API Instagram en C#
Problème de macro et d'importation d'un fichier WordCharger fichier txt dans tableau
Lire une variable contenu dans un fichier durant une boucle ?retrouver un mot dans un Fichier
Plus de sujets relatifs à : calculer la taille d'un fichier texte en C


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