如何在不更改内容的情况下更新文本文件

时间:2012-10-09 17:54:26

标签: c file file-io

您好,我想知道是否可以更新文本文件,我的意思是在不更改内容的情况下向所有行添加一些文本。假设一个像这样的文本文件。

A
B
C
D
E
F
G

我希望像这样更新(在所有行的第一个字符附近添加另一个字符)

A   H
B   I
C   J
D   K
E   L
F   M
G   N

当我以追加模式打开文本文件并以各种方式使用fseek()函数时,即使它可以在行中添加一些数据,但每次都会丢失一些数据。

我希望明白这个问题,如果你能提供帮助,我将不胜感激。无论如何,谢谢。

3 个答案:

答案 0 :(得分:2)

通过C和POSIX文件操作访问的文件模型将文件显示为字节序列,并且没有插入操作。您只能写入现有字节(替换它们),在末尾添加新字节或截断文件。

要创建所需的输出,您必须写入新文件。读完输入文件后,可以将新文件移动到旧文件的路径,从而用新输出替换旧文件。

答案 1 :(得分:1)

最好的办法是简单地将所有数据读入内存,然后以所需的格式写出文件。有时为了可读性和可维护性而牺牲一点效率会更好。

答案 2 :(得分:0)

文本文件中“行”的概念实际上只意味着文件中有换行符('\ n')。

要在文本文件中的第一行元素之后添加数据,请找到要追加的字符,然后将数据放在该字符和下一个换行符之间。