用C覆盖文件的内容

时间:2018-05-19 18:33:46

标签: c fopen fwrite fseek

我尝试使用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

我该怎么做?

1 个答案:

答案 0 :(得分:1)

使用"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;
}