C覆盖文件内容

Overwrite contents of the file in C

我尝试在 C 中使用 fwrite()fseek() 覆盖文件的内容,但它不起作用。

文件大小为30,我想通过覆盖文件中的位置10~13来写入"ABCD"。所以我在下面编程。

FILE *fp = fopen("file.txt", "a+");
fseek(fp, 10, SEEK_SET); 
fwrite("ABCD", 1, 4, fp);

但是"ABCD"写在文件中的位置30之后。我找到了一些使用二进制模式的建议(比如 "ab+"),但是 'b' is ignored on all POSIX conforming systems.

我该怎么做?

使用 "r+" 模式而不是 "a+" 打开文件(二进制的 b 是可选的,在 POSIX 系统上基本上不相关):-

#include <stdlib.h>
#include <stdio.h>

int main(void){
    FILE *fp = fopen("file.txt", "r+");
    fseek(fp, 10, SEEK_SET);
    fwrite("ABCD", 1, 4, fp);
    fclose(fp);

    return 0;
}