2010-05-10 16 views
3

Comment puis-je obtenir la taille d'un fichier en C lorsque la taille du fichier est supérieure à 4 Go? Ftell retourne un octet long signé de 4 octets, en le limitant à deux octets. stat a une variable de type off_t qui est aussi de 4 octets (pas sûr de signe), donc au plus il peut me dire la taille d'un fichier 4gb.Comment obtenir la taille d'un gros fichier (> 4 Go)?

Que faire si le fichier est plus grand que 4 Go?

+5

Sur quel OS? Ce n'est pas complètement standardisé. –

+1

ici: http://stackoverflow.com/questions/1035657/seeking-and-reading-large-files-in-a-linux-c-application – Drakosha

+0

Cela peut-il vous aider: http://stackoverflow.com/questions/ 238603/how-i-get-a-files-size-in-c – Boris

Répondre

2

Sous Linux avec la glibc, ftell renvoie un off_t; en fonction des indicateurs off_t peut être 32 bits ou peut être 64 bits.

Sous Linux, vous pouvez obtenir les indicateurs appropriés pour avoir un off_t 64 bits en faisant getconf LFS_CFLAGS (LFS signifie support de fichiers volumineux).

+0

La documentation de la glibc montre 'ftell' retournant' long int' et 'ftello' retournant' off_t'. http://www.gnu.org/software/libc/manual/html_node/File-Positioning.html –

2

Sur Windows, GetFileSize[Ex] est ce que vous utilisez.

1

essayer

#define _LARGEFILE64_SOURCE 1 
#define _FILE_OFFSET_BITS 64 

Je pense que l'augmentation de la taille de off_t à 64 bits sur certains systèmes d'exploitation