2011-05-14 110 views
0

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

但是,如果我打开写入文件(模式为“wb”)..写入in ..关闭它,然后打开文件读取(模式为“rb”)并从中读取,然后它可以工作精细。

+1

显示您正在使用的代码。 – Mat 2011-05-14 07:38:56

+0

什么样的“垃圾值”?你可以pastebin一个简单的测试结果吗? – 2011-05-14 07:40:17

回答

2

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

此外,作为一种良好的做法,请记住始终检查函数的返回值。在这种情况下,也许你的fread()失败了,而你没有注意到它。

+0

谢谢...在我的情况下,fseek()或倒退()确实是我的朋友 – 2011-05-14 11:21:22

0

当使用缓冲的I/O时,在读回已写入的内容之前,需要先执行刷新操作,以确保写入的数据仍然不在本地缓冲区中。

+0

不应该fclose()刷新缓冲区? – 2011-05-14 07:49:44

+0

是的,它应该做的。 – 2011-05-14 08:08:25

+0

在回读之前,我在“rb +”模式下打开时没有关闭文件。 – 2011-05-14 08:37:07

相关问题