如果我使用double
之类的东西来保存文件大小(以字节为单位),这很快就会失败,那么我会使用哪种数据类型?现在有几个TB是常见的,所以我希望数据类型能够容纳一个很大的数字。
答案 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)
答案 5 :(得分:1)
libc stat
使用off_t
,它是无符号的64位宽类型的typedef。这将适合一段时间。