【问题标题】:Does fread() advances the pointer after it finishes reading the file?fread() 是否在完成读取文件后推进指针?
【发布时间】:2013-01-26 21:51:51
【问题描述】:

我正在尝试从 C 中的文件中读取,并且在我完成读取后想要写入同一个文件。我正在尝试为此使用 fread() 。有谁知道 fread 在遇到“\0”后是否推进指针?我的意思是在我读完之后我需要推进指针还是需要立即开始使用 fwrite 写入文件?

【问题讨论】:

  • 如果这是一个文本文件,文件位置是不可预测的。

标签: c file-handling


【解决方案1】:

fread 将推进文件位置(不是指针),直到它到达EOF

但是,它不会仅仅因为遇到'\0'而停止阅读。事实上,即使是fgets,也只会在遇到\n时停止阅读。我所知道的没有标准库函数会停止读取'\0' 处的文件。

【讨论】:

    【解决方案2】:

    是的,它确实会推进指针,除非你遇到 EOF 或遇到错误:

    返回值
    函数 fread() 和 fwrite() 将流的文件位置指示符提前读取或写入的字节数。他们回来了 读取或写入的对象数。如果发生错误或到达文件结尾,则返回值是一个短对象计数(或 零)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-15
      • 1970-01-01
      • 2015-08-22
      • 2019-04-13
      • 2012-05-28
      • 1970-01-01
      相关资源
      最近更新 更多