ファイルサイズが 4GB を超える場合、C でファイルのサイズを取得するにはどうすればよいですか?
ftell は 4 バイトの符号付き long を返し、2 バイトに制限します。stat には off_t 型の変数があり、これも 4 バイト (符号は不明) であるため、せいぜい 4 GB ファイルのサイズがわかります。
ファイルが 4 GB より大きい場合はどうなりますか?
ファイルサイズが 4GB を超える場合、C でファイルのサイズを取得するにはどうすればよいですか?
ftell は 4 バイトの符号付き long を返し、2 バイトに制限します。stat には off_t 型の変数があり、これも 4 バイト (符号は不明) であるため、せいぜい 4 GB ファイルのサイズがわかります。
ファイルが 4 GB より大きい場合はどうなりますか?
glibcを使用するLinuxでは、ftellはoff_t
;を返します。フラグに応じて、off_t
32ビットまたは64ビットの場合があります。
off_t
Linuxでは、実行することで64ビットの適切なフラグを取得できますgetconf LFS_CFLAGS
(LFSはラージファイルサポートの略です)。
Windowsでは、GetFileSize[Ex]
使用するものです。
試す
#define _LARGEFILE64_SOURCE 1
#define _FILE_OFFSET_BITS 64
一部のオペレーティングシステムでは、off_t のサイズが 64 ビットに増加すると思います