将文本插入文本文件

时间:2011-09-30 11:52:27

标签: linux file file-io

好吧,这可能是最简单(或最愚蠢)的问题,但我只是知道...

假设我有一个包含帐户号的文本文件。和平衡。我正在编写一个程序来使用输入的帐号来搜索文件。并使用新余额更新同一文本文件中的余额字段。 我发现使用文件流非常困难。问题是我试图用新的 balance 字符串覆盖所述文本文件中的 balance 字符串。

因此,如果余额为1000(4位),我可以用另外4位数字串覆盖它。但是,如果新的余额字符串超过4位数,则会在余额字段后覆盖数据(这是一个简单的文本文件,请注意...)。 例如,如果文本文件包含

Acc. No.         balance
123456           100
123567           2500

字段由TAB'\ t'字符分隔,下一条记录由换行符'\ n'分隔。如果我为帐户123456输入200000的新存款,则fwrite()函数会将文本文件中的数据覆盖为...

Acc. No          Balance
123456           2001003567         2500

您可以注意到余额字段后面的'\ n'和下一个帐户中的2位数字'acc'。没有。被覆盖。

当然,没人想要发生这种情况:) 我需要的是一种在该文件中插入文本的方法,而不仅仅是覆盖它。使用Java,python甚至SED执行此操作有很多结果,但没有使用FILE流的结果。 请分享您的想法......谢谢。

2 个答案:

答案 0 :(得分:1)

您必须先将插入点后的所有数据移动几个字节。这就是Java,sed或python所做的,如果他们不是一开始就写一个临时文件的。

答案 1 :(得分:0)

如果您真的想在纯文本文件中管理数据:

在读取文件时,将数据的修改版本写入临时文件,然后删除原始文件并将临时文件重命名为原始文件名。但请注意,没有其他进程可以同时访问同一个文件。

数据库系统是为此目的而发明的。因此,我建议您在数据库表中管理数据,并在需要时动态创建文本报告。