C语言 成功调用fseek()函数清除流的文件结束指示符



标准c库函数fseek的手册说:"对fseek()函数的成功调用清除了流的文件结束指示器。"

对我来说,这听起来像是说如果EOF is at 2和我调用fseek()来获得指针在4,那应该工作,eof现在将指向5。但是当我测试这个假设时,指针并没有超越当前的EOF(在上述情况下为2),因此我对这条线的理解是错误的。这条线是什么意思呢?谢谢!

您必须记住,直到您实际尝试从文件末尾读取时才设置EOF标志。

使用fseek清除标志,即使您试图超越文件的末尾,它也会这样做。它之所以有效是因为下次读取时将再次设置该标志

这就是为什么使用像while (!feof(...))这样的循环是一个坏主意,因为它们会循环一次,而不会检测到文件条件的实际结束。

相关内容

  • 没有找到相关文章

最新更新