月度归档:2013年06月

C 读取 ini 配置文件

ini 是一种很有用的配置文件格式,最初出现在 Windows 操作系统上,特别是其支持两级配置项,扩展起来很方便。相比于 XML 配置文件,又很轻量并且清晰易读。当然,如果需要多级的配置项,用 XML 是个很好的选择。

最近做一个项目准备使用 ini 作为配置文件格式,找来找去没找到一个趁手的 C 语言的 ini 配置文件解析器,如果认真找的话应该也能找到,但抑制不住造轮子的欲望,于是我自己用 C 写了一个 ini 配置文件解析器。简单期间,不支持写操作,只支持读操作。项目地址在此:https://github.com/haipome/ini

它支持基本的 ini 语法,即:

[section]

标识一个段的开始,直到下一个段开始或文件结束都属于这个段。

name=value

标识一个属性。

另外,它还有一下特征:

1、支持全局属性,即如果属性在任何段定义都没有出现时,那么它是全局的,放在 “global” 段里。在查询时,section 参数如果为 NULL 或空字符串,那么就在全局段里找。当然,你也可以显式的的写出 [global] 段。

2、段名,属性名和属性值没有长度限制,最大限制取决于内存大小。

3、段名和属性名的命名没有特殊限制,你甚至可以用使用汉字。当然,属性名内不能包含 ‘=’,另外它们周围的空白字符会被去掉,内部是可以包含空白字符的。

4、空行,包括只含有空白字符的行会被自动忽略。

5、如果行以 ‘;’ 或 ‘#’ 开始(如果前面有空白的话忽略),则该行也被忽略,可以用来提供注释。

6、如果一个段在前面已经出现过,那么自动把它们合并在一起;如果在一个段内,一个属性名已经出现过,那么它会覆盖原有的值。

7、换行符可以用 ‘\’ 转义,这样你可以把一个很长的行拆开来写。

提供的 API 中有一些很方便的功能,可以直接读取一个整数或浮点数,也可以直接读取一对 IP : Port 地址。

非常欢迎 fork 和 pull request.