在C中高效地编辑文件中的单个值

在C中高效地编辑文件中的单个值,c,linux,file,sed,C,Linux,File,Sed,我有一个C程序,目前通过系统调用使用sed编辑参数文件中的单个值。我想将程序更改为使用C文件库编辑该值,但我知道的唯一方法是读取整个文件,更改该值,然后重写该文件。有没有更有效的方法?该程序旨在在嵌入式设备上使用,因此我希望使用最有效的解决方案。处理文件就像处理数组一样,在插入和删除之前不能真正使用数组。插入和删除需要移动并复制文件/数组的其余部分。只有通过打开文件进行读写并使用seek才能替换元素 读取和写入整个文件非常有效,尤其是对于小文件。如果内存使用不是一个问题,那就是我会采取的方法 在

我有一个C程序,目前通过系统调用使用sed编辑参数文件中的单个值。我想将程序更改为使用C文件库编辑该值,但我知道的唯一方法是读取整个文件,更改该值,然后重写该文件。有没有更有效的方法?该程序旨在在嵌入式设备上使用,因此我希望使用最有效的解决方案。

处理文件就像处理数组一样,在插入和删除之前不能真正使用数组。插入和删除需要移动并复制文件/数组的其余部分。只有通过打开文件进行读写并使用seek才能替换元素

读取和写入整个文件非常有效,尤其是对于小文件。如果内存使用不是一个问题,那就是我会采取的方法


在特定情况下,其他解决方案可能更好,但您描述的方法通常是最好的。

打开文件,将光标移动到该位置,更改并保存。它的工作方式与sed相同,只是它没有实际加载整个文件。是的,只需打开文件,使用seek将自己放置在该值处,然后写入新数据…如果新数据的长度与以前的数据的长度不同…?在这种情况下,数据的长度恰好相同,但我认为读取和重写整个文件是处理不同大小数据的唯一解决方案。从技术上讲,您可以重写文件的其余部分,而不是整个文件。但这变得复杂起来。对于小文件,我怀疑它会更快。