如何使用fread正确缓冲行

时间:2017-08-07 11:45:01

标签: c++ io fread fseek seekg

我想出于某种原因(速度和......)使用<appSettings> <add key="microsoft:xmldictionaryreader:maxmimeparts" value="10000"/> </appSettings> 作为IO。我有一个不同大小的文件的文件。通过使用如下代码:

fread()

最后一行可能读不完整,我们必须在下一次试用中再次阅读最后一行,那么如何强制while( !EOF ){ fread(buffer,500MB,1,fileName); // process buffer } 从最后一行的开头继续?

或者如果可能的话,如何强制fread()读取超过500MB直到达到\ n或其他特定字符?

全部谢谢

阿米尔。

1 个答案:

答案 0 :(得分:0)

假设你有一个buffer字节反向在位置\n找到一个pos字符,那么你想要回滚到缓冲区的长度减去{{1} }}。请拨打此pos

您可以使用step将文件指针移回这么多:

fseek

在你的情况下

int fseek( FILE *stream, long offset, int origin );

这将涉及重新阅读部分文件,以及相当多的跳跃 - 评论提出了可能更快的替代方法。