c语言fwrite 覆盖旧数据

我是用wb开启的文件,开启之后分多次fwrite,后面的并没有覆盖前面的。
是不是所谓的覆盖是指,以wb形式打开文件,读写位置会自动移至文件头,导致覆盖原有数据,而一次打开之后几次fwrite就不会发生这种情况

不是的以外包打开会自动把文件以前的内容全部清空,再进行你写的操作,并没有覆盖一说,如果不想覆盖,就用ab追加模式,或者rb读的模式
rb模式不会请数据,这时候写数据才会发生那种数据覆盖的情况
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-01-05
wb以只写方式创建一个二进制文件,只要fopen了,无论是否执行写操作,原来文件的内容都将丢失,相当于删除原文件,又重新创建一个相同名字的文件。
fopen之后,读写位置会随着fread\fwrite等操作向后移动,可以使用fseek改变读写指针的位置,从而可以使用fwrite覆盖原有数据。
第2个回答  2013-01-05
读写不会自动移动到文件头,如果被覆盖了,肯定是你文件指针指向了被覆盖区域。只有append模式才有自动移动文件指针的机制,但是它只移动到文件尾部,不会覆盖。所以要好好看看你计算文件指针位置的代码,看哪有错
第3个回答  推荐于2018-03-29
wb模式,是只写打开或新建一个二进制文件。

如果文件 不存在,就新建一个;如果存在,就打开,并且文件长度清为0。
每次打开指针都会指向开始的位置。本回答被网友采纳

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网