将文本信息附加到某个位置的文本文件而不覆盖旧信息(C)

时间:2013-03-12 06:54:50

标签: c

所以我有一个如下所示的txt文件:

112 12.50 Y 15

267 7.75 N 20

382 15.50 N 45

提示用户在哪里插入新ID。我的工作是让程序将新ID写入.txt文件而不完全覆盖所有信息。假设用户想要在267之后插入新ID。用户告诉我新的ID是123,12.34,N,12。.txt文件必须如下所示:

112 12.50 Y 15

267 7.75 N 20

123 12.34 N 12

382 15.50 N 45

3 个答案:

答案 0 :(得分:3)

在标准C中,没有功能可以在文件中的某个位置插入新数据。

普通C中唯一的两个选项是:

  1. 创建一个临时文件,将旧文件的数据复制到临时文件的插入点,将新数据写入临时文件,将旧文件的其余数据复制到临时文件,将临时文件重命名为旧文件的名称。
  2. 计算需要插入多少新数据,从插入点移动(通过复制)所有数据的数量,在插入点写入新数据。
  3. 可能存在特定于OS的功能,以在文件内的任意位置执行数据插入。但是,再次,不是在C标准定义的标准C库中。

答案 1 :(得分:2)

您必须在文件中间添加信息而不覆盖旧数据的唯一选择是手动移动要添加到文件中的位置之后的所有数据。

答案 2 :(得分:2)

步骤进行:

  1. 创建临时文件
  2. 从源文件中读取每一行并写入临时文件,然后解析它
  3. 然后在找到ID之后插入新行,之后您需要插入新行
  4. 写入源文件中的所有剩余行
  5. 删除源文件
  6. 将临时文件重命名为源文件的名称。
  7. 庆祝!