用C ++读取大文件

时间:2016-06-02 09:50:14

标签: c++ fread

我管理一个大小为2.15GB的PDF文件,我用fopen打开文件,我使用_fseeki64_ftelli64来获取或更新文件中的指针位置,它可以正常工作

我使用fread来阅读pdf文件。通常它可以正常工作,但是当读指针位于文件末尾附近时,fread会得到错误的EOF字符。

那么,如何从这个大型PDF文件中正确阅读。

注意:我对大小小于2GB的文件使用相同的源代码,并且它可以正常工作。

4 个答案:

答案 0 :(得分:2)

听起来我已经看到了签名的32位整数的2G限制。这个变量的最大值是2,147,483,647。

修改

使用调试器并检查发送至_fseeki64_ftelli64实际值并输入

答案 1 :(得分:0)

使用现代编译器(Windows上的VS2012 +),您可以使用fstream这是访问大文件的标准方法。

有关详细信息,请参阅this answer

答案 2 :(得分:0)

由于你提到过像EOF这样的东西,所以请检查你是否正确使用了fread。最重要的是循环,如果它在那里尝试以块的形式读取数据。

请检查您是否不是Wrongly using loop while using fread

的受害者

答案 3 :(得分:0)

与fread函数无关,但是,文件的读指针已经位于文件的末尾。这就是它返回EOF的原因。 当我改变读指针位置时,fread正常工作。