4

当文件大小大于 4gb 时,如何在 C 中获取文件的文件大小?

ftell 返回一个 4 字节有符号长,将其限制为两个字节。stat 有一个 off_t 类型的变量,它也是 4 个字节(不确定符号),所以它最多可以告诉我 4gb 文件的大小。

如果文件大于 4 GB 怎么办?

4

3 回答 3

2

在带有 glibc 的 Linux 上, ftell 返回一个off_t; 取决于标志off_t可能是 32 位或可能是 64 位。

off_t在 Linux 上,您可以通过执行获得适当的标志以具有 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 回答