taille du fichier dans le programme c

Je veux juste trouver la taille du fichier à l’aide du programme c .. J’ai écrit un code mais il donne un résultat erroné

fseek(fp,0,SEEK_END); osize=ftell(fp); 

Y-a t’il une autre possibilité?

L’appel système stat est la solution habituelle à ce problème. Ou, dans votre cas particulier, fstat .

ftell retourne un int. Si vous utilisez un système où int est de 32 bits et que votre fichier a plus de 2 Go, vous risquez de vous retrouver avec une taille négative. POSIX fournit ftello et fseeko qui utilisent un off_t. C a fgetpos et fsetpos qui utilisent fpos_t – mais fpos_t n’est pas un type arithmétique – il conserve les éléments liés à la gestion du jeu de caractères par les parameters régionaux, par exemple.

Il n’y a aucune raison pour que cela ne fonctionne pas.

Y-a t’il une autre possibilité? Vous pouvez utiliser stat si vous connaissez le nom du fichier:

 struct stat st; stat(filename, &st); size = st.st_size; 

Au fait, ftell retourne un long int

L’en – tête sys / stat.h définit la structure des données renvoyées par les fonctions fstat() , lstat() et stat() .

Essayez d’utiliser _filelength . Ce n’est pas portable, cependant … Je ne pense pas qu’il existe un moyen complètement portable de faire cela.

Essayez ceci en utilisant fstat() :

 int file=0; if((file=open(,O_RDONLY)) < -1) return -1; // some error with open() struct stat fileStat; if(fstat(file,&fileStat) < 0) return -1; // some error with fstat() printf("File Size: %d bytes\n",fileStat.st_size); 

La seule valeur de retour négative par ftell est -1L en cas d’erreur. Si cela ne vous dérange pas d’utiliser WinAPI, obtenez la taille du fichier avec GetFileSizeEx :

 HANDLE hFile = CreateFile(filename, GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); LARGE_INTEGER size; GetFileSizeEx(hFile, &size); printf("%ld", size.QuadPart); CloseHandle(hFile);