在 WIN32 下,size_t 在 32 位系统中是 unsigned int,文件定位因此受到限制,导致读取大文件失败。
解决办法是使用 64 位接口。例如,将 fseek 替换为 _fseeki64,即可支持大文件的定位操作。
函数原型
_Check_return_opt_ _CRTIMP int __cdecl _fseeki64(_Inout_ FILE * _File, _In_ __int64 _Offset, _In_ int _Origin);
类似地,还有 _ftelli64 用于获取当前文件位置。