c语言fwrite 覆盖旧数据

2025-01-24 22:28:01
推荐回答(4个)
回答1:

不是的以外包打开会自动把文件以前的内容全部清空,再进行你写的操作,并没有覆盖一说,如果不想覆盖,就用ab追加模式,或者rb读的模式
rb模式不会请数据,这时候写数据才会发生那种数据覆盖的情况

回答2:

wb以只写方式创建一个二进制文件,只要fopen了,无论是否执行写操作,原来文件的内容都将丢失,相当于删除原文件,又重新创建一个相同名字的文件。
fopen之后,读写位置会随着fread\fwrite等操作向后移动,可以使用fseek改变读写指针的位置,从而可以使用fwrite覆盖原有数据。

回答3:

读写不会自动移动到文件头,如果被覆盖了,肯定是你文件指针指向了被覆盖区域。只有append模式才有自动移动文件指针的机制,但是它只移动到文件尾部,不会覆盖。所以要好好看看你计算文件指针位置的代码,看哪有错

回答4:

wb模式,是只写打开或新建一个二进制文件。

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