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;
}
我尝试在 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;
}