linux - 将文本插入文本文件

标签 linux file file-io

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

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

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

Acc. No.         balance
123456           100
123567           2500

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

Acc. No          Balance
123456           2001003567         2500

您可以注意到余额字段后的'\n',以及来自下一个帐户的acc 的2 位数字。不。被覆盖。

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

最佳答案

您必须首先将插入点之后的所有数据向上移动几个字节。这也是 Java、sed 或 python 所做的,如果它们不是开始编写临时文件的话。

关于linux - 将文本插入文本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7609938/

相关文章:

linux - 从 Jenkins 执行时,期望实用程序不起作用

linux - CentOS Subversion,基本授权密码文件不起作用

Python 最佳实践 : Whether to use subprocess/fabric calls or use a Linux script?

java - 如何从文件的字节数组中获取文件名?

python - 程序结束后保持 matplotlib 图形打开

java - 对文本文件中的值求和并打印它们

javascript - 在 Firefox 中设置 FileInput 的 FileList

c - fscanf 不能正常工作

c - 文件正在无限接受输入

python - 将列表项转换为 int 并将它们相加的最有效方法