calculer la taille d'un fichier texte en C - C - Programmation
Marsh Posté le 15-05-2015 à 13:36:38
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 :
|
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 : |
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 :
|
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.
Marsh Posté le 15-05-2015 à 13:52:26
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"...)
Marsh Posté le 15-05-2015 à 01:16:40
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;
}