【发布时间】:2017-08-07 11:45:01
【问题描述】:
出于某种原因(速度和...),我想将fread() 用于 IO。我有一个不同大小的行的文件。通过使用如下代码:
while( !EOF ){
fread(buffer,500MB,1,fileName);
// process buffer
}
最后一行可能读不全,下次试一试还要再读最后一行,如何强制fread()从最后一行开始继续?
或者如果可能的话,如何强制fread() 读取超过 500MB 直到到达 \n 或其他特定字符?
谢谢大家
阿米尔。
【问题讨论】:
-
如果你想要线条,为什么不使用
fgets()?fseek()和它有什么关系?或seekg()? -
您可能只需要分块阅读。 stackoverflow.com/questions/34081158/…
-
@EJP 因为我想将文件的一大块读入内存然后解析它。对于大文件,它比使用 fgets() 逐行读取要快。因为更少的 IO 访问......现在我需要一个函数来告诉 fread 更改下一次检索的位置
-
@doctorlove 您提供的链接手动完成,它会在缓冲区中找到最后一个 \n 并将剩余的复制到下一个缓冲区的开头,这对我来说不合适,我需要一种方法来告诉fread 改变读取位置,例如通过查找最后一个 \n 我们可以计算我们必须再次读取多少字节,告诉 fread() 向后读取一些字节并读取...