c - 合并两个文本文件

时间:2013-02-19 08:51:09

标签: c winapi file-io

说我有2个文本文件:

A.TXT:

Param1: Value1
Param2: Value2
      .
      .
      .
      .
ParamM: ValueM

B.txt

Param1: Value1
Param2: Value2
      .
      .
      .
      .
ParamN: ValueN
  • A.txt 中的参数数量,即 M 可以大于,小于或等于 B.txt中的参数数量,即 N
  • A.txt B.txt 中相同参数的值不必相同。
  • M N 的最大值可能达到200.
  • 参数名称是任意的。他们没有数字。以上只是为了说明。

我的目标是合并 A.txt B.txt 。如果发生任何冲突,我有一个文件/内存存储器,它指示哪一个优先。

例如,

A.txt 可能如下所示:

Path: C:\Program\Files
Data: ImportantInfo.dat
Version: 1.2.3
Useless: UselessParameter.txt

B.txt 可能如下所示:

Path: C:\ProgramFiles
Data: NotSoImportant.dat
Version: 1.0.0
Useful: UsefulParameter.txt

最终文本文件应如下所示:

Path: C:\ProgramFiles
Data: ImportantInfo.dat
Version: 1.2.3
Useful: UsefulParameter.txt

现在我的思考方法是:

get a line from A.txt
get a line from B.txt
tokenize both by ":"
compare param names
if same
    write A.txt's value to Result.txt
else if different
    write A.txt's line into Result.txt
    write B.txt's line into Result.txt  /* Order doesn't really matter */
repeat above steps until end of both text files

A.txt 具有某个参数且 B.txt 没有时,此方法不会处理。如果存在一些轻量级库/ API,那将非常有用。我不是在寻找命令行工具(感谢执行system()调用的开销)。

谢谢!

1 个答案:

答案 0 :(得分:2)

在具有Map数据类型的语言中,这将更加容易。 我会这样做:

  1. 读取所有B并将键值字符串存储在内存中

  2. 读取A并为每个键覆盖值(如果存在)或添加(如果不存在)

  3. 将键值输出到文件