【发布时间】:2023-03-23 19:25:01
【问题描述】:
我对这段代码有点头疼:
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”我可以做我想做的事,但我不太明白为什么我不能让它这样工作!
附:对不起,可能的错误,英语对我来说是第三种语言!
【问题讨论】:
-
你用
a(append)`打开了文件,所以所有的写操作都会附加到文件中。这就是问题的根源。使用 Read Plus Binary:("r+b") 的mode表示 1) 我想读取文件。 2)我想在当前文件位置指示符处写入文件。和 3) 我想使用 'binary' 执行所有读写操作,(没有特殊处理换行符等。也不想使用 "w+b" 作为打开write将导致文件被截断在fopen()