c - 合并两个文本文件

标签 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.txtB.txt 中不必相同。
  • MN 可能会达到最大值 200。
  • 参数名称是任意的。他们没有数字。以上仅供说明。

我的目标是合并 A.txtB.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() 调用的开销)。

谢谢!

最佳答案

如果使用具有 Map 数据类型的语言,这会容易得多。 我会这样做:

  1. 读取B的所有内容并将key-value字符串存入内存

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

  3. 将键值对输出到文件

关于c - 合并两个文本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14953310/

相关文章:

c - 使用本地主机 : different behaviour when statically linked or not on same system 获取地址信息

windows - 创建窗口时 ntdll.dll 中的 SIGSEGV

c - fgets 不起作用 -

c - 合并排序未显示 C 中的所有答案

c - 在 C 语言中,给返回指针的函数赋值有什么作用? *功能=值

c++ - 使用箭头键 C++?

c++ - 在构造函数中清零结构

linux - 请帮忙修改linux下的shell脚本

perl - 如何在 Perl 中创建二进制文件?

在函数中调用数组