4

ファイルサイズが 4GB を超える場合、C でファイルのサイズを取得するにはどうすればよいですか?

ftell は 4 バイトの符号付き long を返し、2 バイトに制限します。stat には off_t 型の変数があり、これも 4 バイト (符号は不明) であるため、せいぜい 4 GB ファイルのサイズがわかります。

ファイルが 4 GB より大きい場合はどうなりますか?

4

3 に答える 3

2

glibcを使用するLinuxでは、ftellはoff_t;を返します。フラグに応じて、off_t32ビットまたは64ビットの場合があります。

off_tLinuxでは、実行することで64ビットの適切なフラグを取得できますgetconf LFS_CFLAGS(LFSはラージファイルサポートの略です)。

于 2010-05-10T04:53:43.897 に答える
2

Windowsでは、GetFileSize[Ex]使用するものです。

于 2010-05-10T05:11:16.607 に答える
1

試す

#define _LARGEFILE64_SOURCE 1
#define _FILE_OFFSET_BITS 64

一部のオペレーティングシステムでは、off_t のサイズが 64 ビットに増加すると思います

于 2010-05-10T05:14:24.387 に答える