【问题标题】:Opening mode of Binary files二进制文件的打开方式
【发布时间】:2011-05-14 07:30:40
【问题描述】:

您好,我想打开一个二进制文件进行读写(不截断,不附加)。我使用模式“r+b”。我没有编译错误,但是当阅读我所写的内容时,我得到了垃圾值。任何想法。

但是,如果我打开文件进行写入(模式为“wb”)..写入 in..关闭它然后打开文件进行读取(模式为“rb”)并从中读取,那么它工作正常.

【问题讨论】:

  • 什么样的“垃圾价值观”?你能粘贴一个简单测试的结果吗?

标签: c file


【解决方案1】:

当您以“r+”、“w+”等读/写模式打开文件时,您需要确保文件指针指向有效位置。 fseek() 是你的朋友。

另外,作为一个好习惯,请记住始终检查函数的返回值。在这种情况下,您的 fread() 可能在您没有注意到的情况下失败了。

【讨论】:

  • 谢谢...fseek() 或者更确切地说 rewind() 在我的情况下确实是我的朋友
【解决方案2】:

当使用缓冲 i/o 时,您需要在读回已写入的内容之前进行刷新,以确保没有任何写入的数据仍然存在于本地缓冲区中。

【讨论】:

  • 不应该 fclose() 刷新缓冲区吗?
  • 在回读之前以“rb+”模式打开文件时没有关闭文件。
猜你喜欢
  • 1970-01-01
  • 2017-06-04
  • 2015-10-07
  • 2020-07-21
  • 1970-01-01
  • 2015-07-19
  • 2015-07-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多