使用C中的fseek()在文件中的特定位置插入数据

时间:2011-03-18 11:21:38

标签: c

基本上我想将数据写入特定位置的文件,并且不希望将数据加载到内存中以进行排序。例如,如果我有一个文件:

FILE.TXT

Andy dsoza
Arpit Raj
Karishma Shah
Pratik Mehta
Zppy andre

我想插入一个联系人Barbie patel然后我会在每行之后读取文件中的第一个字母,所以芭比应该在Arpit之后和Karishma之前插入所以编辑后的文件应该是:

FILE.TXT

Andy dsoza
Arpit Raj
Barbie Patel
Karishma Shah
Pratik Mehta
Zppy andre

但是fseek驱使我找到那个位置,但是当我使用fprintf / fwrite / putc时,我不会帮助我插入。它替换了字节,但没有在该特定字节之前插入。

如果我将来有很多联系人,那么将所有数据加载到内存中并将其整理出来并不是一件好事。

2 个答案:

答案 0 :(得分:3)

如果不将文件加载到内存中,您将无法直接插入文件。如何管理更长的文件取决于有效的设计方法。

一种方法是使用不同的文件。

答案 1 :(得分:3)

您无法在文件中间插入数据。您必须首先阅读文件中从该点到结尾的所有内容,覆盖然后附加您阅读的内容。