ini文件解析:
iniparser-3.1
sudo tar xvf iniparser-3.1.tar.gz
sudo make ———-生成静态库libiniparser.a 和 动态库libiniparser.so.0
头文件及源码放在 src 目录中
cd test 应用的例子 参考iniexample.c parse.c
将iniexample.c copy到上级目录,目录结构如下:
AUTHORS html INSTALL libiniparser.so.0 Makefile src
doc iniexample.c libiniparser.a LICENSE README test
如何编译 iniexamp.c ??? 需要用到动态库 及头文件
gcc -o app iniexample.c -I ./src -L. -liniparser (注意 L 后的 . 不可或缺)
ini = iniparser_load(ini_name); // 将ini 文件读取到结构体中
iniparser_dump(ini, stderr); // 将ini 文件内容输出到终端上
b = iniparser_getboolean(ini, "pizza:ham", -1); //返回bool型数据
s = iniparser_getstring(ini, "wine:grape", NULL); 得到字符串型数据
i = iniparser_getint(ini, "wine:year", -1); 得到整形
d = iniparser_getdouble(ini, "wine:alcohol", -1.0); 得到 double
iniparser_freedict(ini); 将结构体内容释放
使用:
int main(int argc, char * argv[])
{
int status ;
if (argc<2) {
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 ;
ini = fopen("example.ini", "w");
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 ;
char * s ;
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");
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");
s = iniparser_getstring(ini, "wine:grape", NULL);
printf("Grape: [%s]\n", s ? s : "UNDEF");
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");
d = iniparser_getdouble(ini, "wine:alcohol", -1.0);
printf("Alcohol: [%g]\n", d);
iniparser_freedict(ini);
return 0 ;
}