【问题标题】:Does fgets() move the file pointer ?fgets() 是否移动文件指针?
【发布时间】:2017-05-05 16:36:43
【问题描述】:

fgets() 函数是否将文件指针自动移动到我提到的大小参数的位置?

例如:

文件p.txt的内容是“我是个好孩子”。使用 fgets(a,5,fp1) 后 文件指针是否向前移动 5 个位置?

在任何一本书中都无法清楚地找到这一点。因此查询。

【问题讨论】:

  • FILE* 未被fgets() 修改。 文件偏移量可能是(如果文件是可搜索的)。
  • 我想知道你为什么这么问。你有没有其他指示的代码?这个问题一定有一些背景。请解释一下。
  • @SamS - 为什么你会认为关于 fgets() 的问题与关于 fread() 的问题重复?
  • 原因是我想将一个文件复制到另一个文件。所以我想到的问题是,如果指针不移动,我的 fgets() 参数中的字符串变量将具有相同的字符串。
  • @ArkaPravaPaul - 执行fgets 时文件位置指示器发生了变化。连续的fgets返回相同的数据。没问题。

标签: c file pointers


【解决方案1】:

使用 fgets(a,5,fp1) 后,文件指针会向前移动 5 个位置吗?

指针fp1 不受fgets 调用(或任何其他stdio I/O 例程)的影响; fp1 指向的 FILE 对象将被更新以反映新的文件位置,但指针本身不会改变。

【讨论】:

  • 你能推荐我一些 C 参考资料/书籍吗? ..我在任何特定的书中都找不到这件事。
  • @ArkaPravaPaul:自 80 年代后期以来,我一直在使用 Harbison & Steele 的 C: A Reference Manual(目前是第 5 版,涵盖到 C99)。我也听说过关于 King's C Programming: A Modern. Approach 的好消息,虽然我没有个人经验。你应该收藏最新的 C 语言标准online draft
  • 非常感谢。干杯
【解决方案2】:

文件指针未被fgets函数修改。

但是,文件偏移量会增加实际读取的字节数。

【讨论】:

  • 您应该强调“读取的字节数”不等于fgets的第二个参数;它将最多比该值小一,并且可能更小(如果您遇到 EOF 或换行符或读取错误)。
猜你喜欢
  • 1970-01-01
  • 2011-03-24
  • 2013-08-05
  • 1970-01-01
  • 1970-01-01
  • 2012-05-28
  • 1970-01-01
  • 1970-01-01
  • 2012-05-21
相关资源
最近更新 更多