我对这段代码感到有点头疼:
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。对不起可能的错误,英语对我来说是第三种语言!
答案 0 :(得分:3)
当您使用模式"a+"
打开文件时,写入将始终显示在文件的末尾。
来自fopen
的{{3}}:
a +打开阅读和追加(在文件末尾写)。该 如果文件不存在,则创建该文件。初始文件位置 读取位于文件的开头,但是输出是 始终附加到文件的末尾。
在此模式下打开文件时,设置偏移仅影响读取。所以使用模式"r+"
就是你想要的。