我尝试使用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。
我该怎么做?
答案 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;
}