c - 动态文件格式转换 - C 编程

标签 c file-io

我是“C”编程的初学者。 我计划使用某种静态配置文件将输入文件转换为不同的格式/输出文件。

例如: 输入文件内容: HDRUS15Jan2014153600MY22Jan2014000000KUL DTLUSANZABC 私有(private)公司,亚利桑那州 53213。 DTLMYKULJS Sdn Bhd, 吉隆坡 49000 。

输出文件内容: ANZ15Jan2014153600 ABC 私有(private)公司,亚利桑那州 53213。 KUL22Jan2014000000 JS Sdn Bhd, 吉隆坡 49000 。

提示: 输入文件格式是固定长度,HDR和DTL关键字是行标识符。 我想避免实现提取内容的硬编码,而是想要一种配置文件...基于配置文件,将提取输入文件内容并构造输出文件。

这个概念将允许我将来在输出文件中生成附加信息,而无需修改源代码。 我将只是更改配置文件...

任何想法都会受到赞赏。

最佳答案

为什么您的输入不使用任何众所周知的数据表示格式(例如 json 或 xml)?通过使用这种格式,您将来的更改不会有任何问题

json 将是一个不错的选择,并且有 c 的实现(libjansson 等)

编辑

好的,然后将您的配置数据存储在文件中,使用某种格式(我更喜欢 json...) 您将需要偏移量和长度信息:

    [
      {
        offset: 0, 
        len: 10
      }
      {
       offset: 10, 
       len: 10
      }
    ]

然后您可以在程序中读取此文件并使用该信息来解析您的输入:

    int offset = getOffset(0);
    int len;  = getLen(0);
    int i;
    for(i = offset; i<len; i++)
    {
      doSomething(input[i]);
    }

关于c - 动态文件格式转换 - C 编程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21187830/

相关文章:

c - 可能的错误 - 将一个流与一个已经有关联的 FD 相关联?

我可以为自定义日志记录功能启用格式警告吗?

c - 未初始化的变量

c++ - 使用 Xlib 更改绘图颜色

c - AH=2的BIOS INT 13H每次只能读取72个扇区。为什么?

java - 从文本文件中随机选择一行

c++ - 在 Windows 中使用 DevC++ 和在 Ubuntu 中使用 gcc 写入文件有什么区别

c++ - 在 C++ 中使用 ifstream 逐行读取文件

c - 如何从文件中读取变量

c++ - 二进制读/写运行时失败