2013-09-22 33 views
4

如果我遇到feof(),然后stat显示文件已经增长,是否有一种方法可以在不执行fclose()fopen()的情况下读取添加的数据?阅读正在增长的文件

+0

请参阅[这里](http://stackoverflow.com/questions/11757304/how-to-read-a-growing-text-file-in-c)和[这里](http://stackoverflow.com /问题/ 7864769/C-阅读从 - 一个活文件,文件保持增长,在尺寸)。 – 2013-09-22 05:36:47

+0

谢谢@Tsukuyo,但第一个链接是C++,它使用了一组不同的文件I/O调用,第二个说使用'select()'这似乎不可行(据我了解'select() '无论如何)。 – Fixee

回答

6

是的。您可以在文件上调用clearerr,或执行任何查找操作,如fseek(f, 0, SEEK_CUR)

+0

'fseek(f,0,SEEK_CUR)'清除'eof'标志?这对我来说是新闻(并且相当有帮助!)。 – Fixee

+0

C99 7.19.9.2 fseek函数,第5段:“确定新位置后,成功调用fseek函数将撤消流上的ungetc函数的任何影响,清除流的文件结束指示符,并且然后确立新的立场。“ –