C文件试图覆盖

时间:2016-05-27 00:53:11

标签: c file mode

我对这段代码感到有点头疼:

 FILE usuaris*
 ....

 usuaris=fopen("usuarisfinal.txt","a+b");
 fseek(usuaris,(pos-1)*sizeof(Tusuari),SEEK_SET);
 fwrite(&usuaux,sizeof(Tusuari),1,usuaris);

我想要做的是用位置“pos”覆盖带有“usuaux”的Tusuari注册表,但我最终在文件的末尾添加了“usuaux”。我知道将模式“a + b”更改为“r + b”我能够做我想要的,但我不太明白为什么我无法以这种方式工作!

P.S。对不起可能的错误,英语对我来说是第三种语言!

1 个答案:

答案 0 :(得分:3)

当您使用模式"a+"打开文件时,写入将始终显示在文件的末尾。

来自fopen的{​​{3}}:

  

a +打开阅读和追加(在文件末尾写)。该       如果文件不存在,则创建该文件。初始文件位置       读取位于文件的开头,但是输出是       始终附加到文件的末尾。

在此模式下打开文件时,设置偏移仅影响读取。所以使用模式"r+"就是你想要的。