ini解析库 c语言

一 ini格式概述
程序没有任何配置文件,那么它对外是全封闭的,一旦程序需要修改一些参数必须要修改程序代码本身并重新编译,为了让程序出厂后还能根据需要进行必要的配置,所以要用配置文件;配置文件有很多种,如INI配置文件,XML配置文件,cfg配置文件,还有就是可以使用系统注册表等。

     本文主要介绍INI文件的格式信息。

     INI ”就是英文 “initialization”的头三个字母的缩写;当然INI file的后缀名也不一定是".ini"也可以是".cfg",".conf ”或者是".txt"。

经典格式如下:

INI文件的格式很简单,最基本的三个要素是:parameters,sections和comments。

什么是parameters?

INI所包含的最基本的“元素”就是parameter;每一个parameter都有一个name和一个value,如下所示:

  name = value

什么是sections ?

所有的parameters都是以sections为单位结合在一起的。所有的section名称都是独占一行,并且sections名字都被方括号包围着([ and ])。在section声明后的所有parameters都是属于该section。对于一个section没有明显的结束标志符,一个section的开始就是上一个section的结束,或者是end of the file。Sections一般情况下不能被nested,当然特殊情况下也可以实现sections的嵌套。

section如下所示:

     [section]

什么是comments ?

在INI文件中注释语句是以分号“;”开始的。所有的所有的注释语句不管多长都是独占一行直到结束的。在分号和行结束符之间的所有内容都是被忽略的。

注释实例如下:

;comments text

当然,上面讲的都是最经典的INI文件格式,随着使用的需求INI文件的格式也出现了很多变种;

INI实例:
; last modified 1 April 2001 by John Doe

[owner]

name=John Doe

organization=Acme Products

[database]

server=192.0.2.42

; use IP address in case network name resolution is not working port=143 file = “acme payroll.dat”

变种格式:请参考http://en.wikipedia.org/wiki/INI_file

二 ini解析库
github:
https://github.com/ndevilla/iniparser

三 iniparser接口简单介绍
Iniparse开源库(不区分大小写,且配置文件最后一行必须为空行)总共包括四个文件,iniparser.h,iniparser.c,dictionary.h,dictionary.其中dictionary为提供给iniparser的功能封装。Iniparser提供的功能函数如下:

int iniparser_getnsec(dictionary * d); //获取配置文件中的section的个数

char * iniparser_getsecname(dictionary * d, int n); //获取配置文件中section名,n为索引值

void iniparser_dump_ini(dictionary * d, FILE * f); //保存配置文件至文件指针f所指的位置

void iniparser_dump(dictionary * d, FILE * f); //保存配置文件,多用于调试

char * iniparser_getstring(dictionary * d, char * key, char * def); //获取关联与key的字符串

int iniparser_getint(dictionary * d, char * key, int notfound); //获取关联与key的int值(转换)

double iniparser_getdouble(dictionary * d, char * key, double notfound); //获取关联与key的double值(转换)

int iniparser_getboolean(dictionary * d, char * key, int notfound); //获取关联与key的bool值(转换)

int iniparser_set(dictionary * ini, char * entry, char * val); //修改配置文件中的一个配置项

void iniparser_unset(dictionary * ini, char * entry); //删除配置文件中的一个配置项

int iniparser_find_entry(dictionary * ini, char * entry) ; //检测一个配置项是否存在

dictionary * iniparser_load(char * ininame); //加载配置文件

void iniparser_freedict(dictionary * d); //释放iniparse所占用的资源

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值