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



如何在linux中以编程方式编辑文件?这似乎是一个非常基本的问题。我很惊讶地发现,目前我没有办法做到这一点。

我带了一个文件。我想编辑它。

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

我想更新一些信息,说一个名字在头一个自定义对象我创建,我怎么能做到程序化?

我试着:

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

我想,seek可以胜任这项工作。但是,就像手册页上写的

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

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

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

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

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

你必须用

打开你需要的文件
fopen(path, "r+");

这样你可以打开它来写和读

最新更新