C-编辑/更新文件(不一定在最后).fopen(路径,"a +")不起作用

mk.*_*k.. 0 c linux file edit

如何在linux中以编程方式编辑文件?这似乎是一个非常基本的问题.我很惊讶地看到目前我认为没办法这样做.

我有一个档案.我想编辑它.

从手册页,我认为"a +"模式将使我能够编辑文件,但似乎我们只能将它附加到文件的末尾,如果我们希望在文件的初始部分进行更改,则不要使用它.文件.

我希望更新一些信息,在标题中说出我创建的自定义对象的名称,我该如何以编程方式进行?

我试过了:

FILE *fp = fopen(path, "a+");
fseek(fp, DESIRED_OFFSET, SEEK_SET);
fwrite("KOLAVERIDI", 10, 1, fp);
fclose(fp);
Run Code Online (Sandbox Code Playgroud)

我想,fseek会做这个工作.但是,就像手册一样

a +打开阅读和追加(在文件末尾写).

它总是附加在文件的末尾(尽管我在fwrite()之前寻找不同的偏移量).

所以我的问题基本上是如何在C中编辑/更新文件?

Som*_*ude 7

如果您希望能够在文件中间写入,则需要以"扩展"读取模式打开文件"r+".

请注意,然后在文件中间写入将覆盖该位置的内容.它不会插入您编写的数据.