在Linux上使用C中的INI文件

有没有一种标准的方法来使用C读取像Linux的INI文件这样的配置?

我正在使用基于Linux的手持设备并在C中编写代码。

否则,我想知道任何替代方案。

最后更新:

我已经探索过甚至使用过LibConfig。 但是占地面积很大,我的使用太简单了。 因此,为了减少占用空间,我已经推出了自己的实现。 实现不是太通用,实际上已经完全耦合了。 配置文件在启动应用程序时解析一次,并设置为某些全局变量。

试试libconfig :

一个用于处理结构化配置文件的简单库,如下所示: test.cfg 。 此文件格式比XML更紧凑,更易读。 与XML不同,它是类型感知的,因此不必在应用程序代码中进行字符串解析。

Libconfig非常紧凑 – 只是expat XML解析器库的一小部分。 这使其非常适合手持设备等内存受限的系统。

该库包括C和C ++语言的绑定。 它适用于符合POSIX标准的UNIX和类UNIX系统(GNU / Linux,Mac OS X,Solaris,FreeBSD),Android和Windows(2000,XP及更高版本)……

不,没有一种标准方式。 对不起,但这可能是最准确的答案:)

但是,您可以查看此Linux配置文件库列表 。 这可能会有所帮助。

这有四个选项:

  1. Iniparser
  2. libini
  3. SDL-CFG
  4. RWini

如果你可以使用(优秀的,在任何基于C语言的应用程序) glib ,它有一个键值文件解析器 ,适用于.ini风格的文件。 当然,您还可以访问glib中的各种(非常好的)数据结构,“免费”。

在ccan有一个更新的iniparser 分支 ,原作者多年来一直没有给予太多的关注。 免责声明 – 我保留它。

另外,iniparser包含一个非常有用的字典。

如果您只需要一个快速而小的代码来读取配置文件,我建议使用inih

它只加载配置文件内容一次,解析内容并为每个键/值对调用回调函数。

真的很小。 它也可以用在嵌入式系统上。

我讨厌在建议XML时提出完全不同的建议,但是libexpat非常简单,但却是XML。

我得出了这个结论,因为我有同样的问题,但后来我意识到项目已经有libexpat链接 – 我应该只是使用它。