C/C++跨平台INI文件解析库:iniparser
来源:互联网 发布:淘宝 白酒 知乎 编辑:程序博客网 时间:2024/06/05 17:41
使用c语言实现的跨平台INI文件解析库,下载地址:https://github.com/ndevilla/iniparser
解析库很小巧,1500行代码,4个文件,跨平台,没有依赖项目,使用 -ansi -pedantic C89 编译
使用起来很方便,官方例子如下:
#include <stdio.h>#include <stdlib.h>#include <string.h>#include <unistd.h>#include "iniparser.h"void create_example_ini_file(void);int parse_ini_file(char * ini_name);int main(int argc, char * argv[]){ int status ; if (argc<2) { /*创建示例ini文件,并解析*/ create_example_ini_file(); status = parse_ini_file("example.ini"); } else { status = parse_ini_file(argv[1]); } return status ;}void create_example_ini_file(void){ FILE * ini ; if ((ini=fopen("example.ini", "w"))==NULL) { fprintf(stderr, "iniparser: cannot create example.ini\n"); return ; } fprintf(ini, "#\n" "# This is an example of ini file\n" "#\n" "\n" "[Pizza]\n" "\n" "Ham = yes ;\n" "Mushrooms = TRUE ;\n" "Capres = 0 ;\n" "Cheese = Non ;\n" "\n" "\n" "[Wine]\n" "\n" "Grape = Cabernet Sauvignon ;\n" "Year = 1989 ;\n" "Country = Spain ;\n" "Alcohol = 12.5 ;\n" "\n"); fclose(ini);}int parse_ini_file(char * ini_name){ dictionary * ini ; /* Some temporary variables to hold query results */ int b ; int i ; double d ; const char * s ; /*创建解析库句柄,所有数据存储在ini里面,所有操作也需要这个句柄*/ ini = iniparser_load(ini_name); if (ini==NULL) { fprintf(stderr, "cannot parse file: %s\n", ini_name); return -1 ; } iniparser_dump(ini, stderr); /* Get pizza attributes */ printf("Pizza:\n"); /*pizza是所属段明ham是段内参数名,iniparser_getboolean会将返回值转化成bool值*/ b = iniparser_getboolean(ini, "pizza:ham", -1); printf("Ham: [%d]\n", b); b = iniparser_getboolean(ini, "pizza:mushrooms", -1); printf("Mushrooms: [%d]\n", b); b = iniparser_getboolean(ini, "pizza:capres", -1); printf("Capres: [%d]\n", b); b = iniparser_getboolean(ini, "pizza:cheese", -1); printf("Cheese: [%d]\n", b); /* Get wine attributes */ printf("Wine:\n"); /*获取string类型的值*/ s = iniparser_getstring(ini, "wine:grape", NULL); printf("Grape: [%s]\n", s ? s : "UNDEF"); /*获取int类型的值*/ i = iniparser_getint(ini, "wine:year", -1); printf("Year: [%d]\n", i); s = iniparser_getstring(ini, "wine:country", NULL); printf("Country: [%s]\n", s ? s : "UNDEF"); /*获取double类型的值*/ d = iniparser_getdouble(ini, "wine:alcohol", -1.0); printf("Alcohol: [%g]\n", d); /*用完之后不要忘记释放句柄,不然会有内存泄露*/ iniparser_freedict(ini); return 0 ;}
0 0
- C/C++跨平台INI文件解析库:iniparser
- ini文件解析c库(iniparser)
- ini文件解析c库(iniparser)
- C语言ini形式配置文件解析库——iniparser
- C语言配置文件解析库——iniparser
- C语言配置文件解析库——iniparser
- C语言配置文件解析库——iniparser
- IniParser+win7解析配置文件INI
- 使用iniparser 处理INI文件
- C/C++跨平台ini文件读写API
- C/C++跨平台INI文件读写API
- Unity中解析ini配置文件----INIParser
- ini解析库 c语言
- 使用C语言解析INI文件
- c 语言 解析ini文件为xml
- 纯C语言INI文件解析
- 纯C语言INI文件解析
- 纯C语言INI文件解析
- Codeforces Round #361 (Div. 2)A. Mike and Cellphone
- Linux Shell 中的反引号,单引号,双引号
- 稀疏编码最优化解法
- 【数据结构】二叉搜索树
- hdu 4387 双连通分量 求权值最小的桥
- C/C++跨平台INI文件解析库:iniparser
- IOS -iphone设备信息读取
- 深入理解Java虚拟机-自动内存管理机制
- ioc 控制反转
- VC++ 注册码
- centos6.5 docker 搜索镜像出错
- java web(二)
- js第三节
- 如何排查EXC_BAD_ACCESS错误 及内存增加问题