【问题标题】:fseek, what does it mean to be to the last byte of a file?fseek,到文件的最后一个字节是什么意思?
【发布时间】:2017-12-01 15:08:55
【问题描述】:

这个问题在测验中弹出:

用正确的数字替换“Z”,将文件指针“fp”设置为文件的最后一个字节:

fseek( fp, Z, SEEK_END );

我的答案是-1,因为对我来说,处于某个字节意味着处于一个位置,这样附加到该文件会覆盖该字节并继续存储其他字节(如果有),这似乎很自然。老师坚持0。如果您能解释一下,我将不胜感激。

【问题讨论】:

  • 嗯,我们无法判断您是否正确地将老师的问题从格鲁吉亚语翻译成英语。老师说你没有,就这样吧。
  • 这是一个 SDSU 程序,所以它是英文的。这是英文的确切问题

标签: c file fseek


【解决方案1】:

-1 似乎是正确的。我刚刚试了一下,fseek(f, -1, SEEK_END) 之后的fgetc 产生了文件的最后一个字符。相对于 SEEK_END 求 0 会导致 fgetc 返回 EOF。

显然指向文件的最后一个字节与指向文件末尾是不同的。此外,如果术语有任何歧义,那是考试失败,而不是学生失败。如果学生展示了预期的知识,他们应该获得学分。

【讨论】:

  • 请注意,这取决于实现。使用fseek() 查找以二进制模式打开的文件的末尾是未定义的行为:“二进制流不需要有意义地支持whence 值为SEEK_END 的fseek 调用。”,它也是未定义的在以文本模式打开的文件上使用 SEEK_END 和非零偏移量的行为:“对于文本流,offset 应为零,或 offset 应为先前成功调用ftell function..." 所以在严格符合 C 代码中是做不到的。
猜你喜欢
  • 1970-01-01
  • 2019-02-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-05
  • 1970-01-01
  • 2015-07-23
相关资源
最近更新 更多