当文件大小大于 4gb 时,如何在 C 中获取文件的文件大小?
ftell 返回一个 4 字节有符号长,将其限制为两个字节。stat 有一个 off_t 类型的变量,它也是 4 个字节(不确定符号),所以它最多可以告诉我 4gb 文件的大小。
如果文件大于 4 GB 怎么办?
当文件大小大于 4gb 时,如何在 C 中获取文件的文件大小?
ftell 返回一个 4 字节有符号长,将其限制为两个字节。stat 有一个 off_t 类型的变量,它也是 4 个字节(不确定符号),所以它最多可以告诉我 4gb 文件的大小。
如果文件大于 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 位