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