【发布时间】:2011-05-14 07:30:40
【问题描述】:
您好,我想打开一个二进制文件进行读写(不截断,不附加)。我使用模式“r+b”。我没有编译错误,但是当阅读我所写的内容时,我得到了垃圾值。任何想法。
但是,如果我打开文件进行写入(模式为“wb”)..写入 in..关闭它然后打开文件进行读取(模式为“rb”)并从中读取,那么它工作正常.
【问题讨论】:
-
什么样的“垃圾价值观”?你能粘贴一个简单测试的结果吗?
您好,我想打开一个二进制文件进行读写(不截断,不附加)。我使用模式“r+b”。我没有编译错误,但是当阅读我所写的内容时,我得到了垃圾值。任何想法。
但是,如果我打开文件进行写入(模式为“wb”)..写入 in..关闭它然后打开文件进行读取(模式为“rb”)并从中读取,那么它工作正常.
【问题讨论】:
当您以“r+”、“w+”等读/写模式打开文件时,您需要确保文件指针指向有效位置。 fseek() 是你的朋友。
另外,作为一个好习惯,请记住始终检查函数的返回值。在这种情况下,您的 fread() 可能在您没有注意到的情况下失败了。
【讨论】:
当使用缓冲 i/o 时,您需要在读回已写入的内容之前进行刷新,以确保没有任何写入的数据仍然存在于本地缓冲区中。
【讨论】: