C 在Windows上对4 GB文件调用stat()时出现未知错误

C 在Windows上对4 GB文件调用stat()时出现未知错误,c,windows-8,32-bit,stat,C,Windows 8,32 Bit,Stat,我在NTFS分区上有一个4 GB(精确)的文件,还有一个程序试图通过stat()获取其大小,但总是失败,出现未知错误(stat返回-1) 这是否意味着NTFS不支持4GB文件?或者我必须使用不同的(Win32?)API 编辑: 产出: stat: Unknown error NTFS确实支持超过4GB的文件,您正在考虑fat32的限制。。。所以不是这样的^ ^NTFS确实支持超过4GB的文件,您正在考虑fat32的限制。。。所以这不是它。^ ^函数返回一个stat结构,该结构定义了32位的文件

我在NTFS分区上有一个4 GB(精确)的文件,还有一个程序试图通过
stat()
获取其大小,但总是失败,出现
未知错误
(stat返回-1)

这是否意味着NTFS不支持4GB文件?或者我必须使用不同的(Win32?)API

编辑:

产出:

stat: Unknown error

NTFS确实支持超过4GB的文件,您正在考虑fat32的限制。。。所以不是这样的^ ^

NTFS确实支持超过4GB的文件,您正在考虑fat32的限制。。。所以这不是它。^ ^

函数返回一个
stat
结构,该结构定义了32位的文件大小,这意味着它只能正确处理高达4GB的文件大小。您应该使用
stat64


另请参见,
stat
函数返回一个
stat
结构,该结构用32位定义文件大小,这意味着它只能正确处理高达4GB的文件大小。您应该使用
stat64


另请参见

是否需要显示一些代码?特别是“未知错误”打印代码。要显示一些代码吗?尤其是“未知错误”的打印代码。看来你是对的。出于某种原因,我认为4GB(
2^32
)应该适合32位变量,但显然它最多只能容纳
2^32-1
stat64
工作正常)。谢谢。虽然他们可以让错误消息更有帮助,但是类似于
EOVERFLOW
…@szx Basic math的东西。32位不能存储
2^32
。在我的例子中,
errno
包含132位,这是
EOVERFLOW
看起来你是对的。出于某种原因,我认为4GB(
2^32
)应该适合32位变量,但显然它最多只能容纳
2^32-1
stat64
工作正常)。谢谢。虽然他们可以让错误消息更有帮助,但是类似于
EOVERFLOW
…@szx Basic math的东西。32位不能存储
2^32
。在我的例子中,
errno
包含132位,即
EOVERFLOW
stat: Unknown error