我管理一个大小为2.15GB的PDF文件,我用fopen打开文件,我使用_fseeki64
和_ftelli64
来获取或更新文件中的指针位置,它可以正常工作
我使用fread
来阅读pdf文件。通常它可以正常工作,但是当读指针位于文件末尾附近时,fread
会得到错误的EOF字符。
那么,如何从这个大型PDF文件中正确阅读。
注意:我对大小小于2GB的文件使用相同的源代码,并且它可以正常工作。
答案 0 :(得分:2)
听起来我已经看到了签名的32位整数的2G限制。这个变量的最大值是2,147,483,647。
修改强>
使用调试器并检查发送至_fseeki64
和_ftelli64
的实际值并输入。
答案 1 :(得分:0)
使用现代编译器(Windows上的VS2012 +),您可以使用fstream
这是访问大文件的标准方法。
有关详细信息,请参阅this answer。
答案 2 :(得分:0)
由于你提到过像EOF这样的东西,所以请检查你是否正确使用了fread。最重要的是循环,如果它在那里尝试以块的形式读取数据。
的受害者答案 3 :(得分:0)
与fread函数无关,但是,文件的读指针已经位于文件的末尾。这就是它返回EOF的原因。 当我改变读指针位置时,fread正常工作。