在C中覆盖文件的内容
我试图在C中使用fwrite、fseek覆盖文件的内容,但不起作用 文件大小为30。我想通过覆盖文件中的位置10~13来写入ABCD。所以我在下面编了一个程序在C中覆盖文件的内容,c,fopen,fwrite,fseek,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” 我该怎么做 使用r+模式打开文件,而不是a+模式。二进制文件的b
FILE *fp = fopen("file.txt", "a+");
fseek(fp, 10, SEEK_SET);
fwrite("ABCD", 1, 4, fp);
但ABCD写在文件中的位置30之后。我找到了一些建议,可以使用二进制模式,比如ab+,但是“b”
我该怎么做 使用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;
}
为什么要打开要追加的文件?模式a+打开以进行读取和追加。使用r+模式。哦,使用r+时效果很好。非常感谢。对于在文本模式下打开的流,fseek的用途有限,因为回车符–换行符转换可能会导致fseek产生意外结果。在追加模式下,所有写入操作都发生在文件末尾;无法使用file*函数定位文件并在给定位置写入;如果您进入文件描述符并使用,则规则会略有不同。