繁体   English   中英

C-编辑/更新文件(不一定要最后)。 fopen(path,“ a +”)不起作用

[英]C- Edit/Update a file(not necessarily in the end). fopen(path, “a+”) doesnt work

如何在Linux中以编程方式编辑文件? 这似乎是一个非常基本的问题。 令我感到惊讶的是,目前我看不到这样做的方法。

我有一个文件。 我想编辑它。

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

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

我试过了:

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

我以为,fseek可以胜任。 但是,就像手册页所说的那样

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

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

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

如果希望能够在文件中间进行写入,则需要使用"r+"以“扩展”读取模式打开文件。

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

您必须打开所需的文件

fopen(path, "r+");

这样,您就可以打开它进行读写。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM