C:用于文件大小(以字节为单位)的正确数据类型是什么?

时间:2011-09-08 08:16:22

标签: c types

如果我使用double之类的东西来保存文件大小(以字节为单位),这很快就会失败,那么我会使用哪种数据类型?现在有几个TB是常见的,所以我希望数据类型能够容纳一个很大的数字。

6 个答案:

答案 0 :(得分:6)

这取决于你的平台。在Unix系统上,您可以使用off_t类型。在Windows上,您可能希望使用LARGE_INTEGER。这些是由函数返回文件大小(Unix上的stat,Windows上的GetFileSize)在这些系统上使用的类型。

如果您想要便携式,uint64_t应该足够大。

答案 1 :(得分:2)

有一个名为ftello()的函数,它返回off_t

使用fgetpos(),您需要一个fpos_t变量 - 编辑:这不一定是算术类型。

因此off_t可以/应该适合您的需求,并让您独立于实际的数据类型大小。

答案 2 :(得分:1)

long long是Pop的最爱:)

答案 3 :(得分:1)

size_t是C中文件大小的常用方法,但它的类型取决于平台(Windows上为32位或64位无符号整数)。我建议使用__int64(一个64位的int) - 最多应该处理138,547,332个字节。

编辑:只需检查,Windows API调用GetFileSizeEx就会获得一个LARGE_INTEGER,这是一个64位有符号整数。所以LARGE_INTEGER也会很好。

答案 4 :(得分:1)

您可能希望使用off_t,因为这是fseekoftello等标准功能使用的。

答案 5 :(得分:1)

libc stat使用off_t,它是无符号的64位宽类型的typedef。这将适合一段时间。