C语言Iniparser库实现ini文件读写
一、概述
iniparser是针对INI文件的解析器。ini文件则是一些系统或者软件的配置文件。iniparser库的API可以对ini文件(配置文件)进行解析、设置、删除等操作。
常见的 ini 读写开源库有:minIni、inifile、iniparser
二、使用
下载
Github:https://github.com/ndevilla/iniparser
方式一
1.编译
下载后进入文件根目录,使用 make 命令编译,编译完成后会生成 libiniparser.a 和 libiniparser.so.1 文件
2.测试
iniparser 提供了测试程序,进入 example 目录,使用 make命令编译,完成后会生成 iniexample 执行文件
3.测试结果
4.注意事项
使用链接文件时,可以参考 example 目录下的 Makefile 文件
方式二
此方法使用比较简单,直接将 class="lazy" data-src 目录下的文件拷贝到工程中即可,使用方式和自己编写的 .c 和 .h 文件一样
三、API函数
iniparser.h
int iniparser_getnsec(dictionary *d);
char * iniparser_getsecname(dictionary *d, int n);
void iniparser_dump_ini(dictionary * d, FILE * f);
void iniparser_dumpsection_ini(dictionary * d, char * s, FILE * f);
void iniparser_dump(dictionary * d, FILE * f);
int iniparser_getsecnkeys(dictionary * d, char * s);
char ** iniparser_getseckeys(dictionary * d, char * s);
char * iniparser_getstring(dictionary * d, const char * key, char * def);
int iniparser_getint(dictionary * d, const char * key, int notfound);
double iniparser_getdouble(dictionary * d, const char * key, double notfound);
int iniparser_getboolean(dictionary * d, const char * key, int notfound);
int iniparser_set(dictionary * ini, const char * entry, const char * val);
void iniparser_unset(dictionary * ini, const char * entry);
int iniparser_find_entry(dictionary * ini, const char * entry) ;
dictionary * iniparser_load(const char * ininame);
void iniparser_freedict(dictionary * d);
dictionary.h
dictionary * dictionary_new(int size);
void dictionary_del(dictionary * vd);
char * dictionary_get(dictionary * d, const char * key, char * def);
int dictionary_set(dictionary * vd, const char * key, const char * val);
void dictionary_unset(dictionary * d, const char * key);
void dictionary_dump(dictionary * d, FILE * out);
四、演示
1.test.ini 文件
#
# 测试文件
#
[Node]
Test = 1234
2.test.c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include "iniparser.h"
#define FILE_INI "test.ini"
int get_ini_info(int *read_buf)
{
dictionary *ini;
ini = iniparser_load(FILE_INI);
if (ini==NULL) {
fprintf(stderr, "cannot parse file: %s\n", FILE_INI);
return -1;
}
// iniparser_dump(ini, stderr);
*read_buf = iniparser_getint(ini, "node:test", -1);
iniparser_freedict(ini);
return 0;
}
int set_ini_info(const char *write_buf)
{
dictionary *ini;
FILE *fp = NULL;
ini = iniparser_load(FILE_INI);
if (ini==NULL) {
fprintf(stderr, "cannot parse file: %s\n", FILE_INI);
return -1;
}
iniparser_set(ini, "node:test", write_buf);
fp = fopen(FILE_INI, "w");
if( fp == NULL ) {
fprintf(stderr, "stone:fopen error!\n");
return -1;
}
iniparser_dump_ini(ini, fp);
fclose(fp);
iniparser_freedict(ini);
return 0;
}
int main (int argc, char **argv)
{
int num = 0;
set_ini_info("1234");
get_ini_info(&num);
printf("date is: %d \n", num);
}
3.文件目录
4.编译
gcc test.c dictionary.c iniparser.c -o test
5.测试效果
到此这篇关于C语言Iniparser库实现ini文件读写的文章就介绍到这了,更多相关C语言 ini文件读写内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341