天嵌二次封装库使用手册  V1.0
iniparser.h 文件参考

ini文件解析器. 更多...

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include "dictionary.h"
iniparser.h 的引用(Include)关系图:

浏览源代码.

函数

int iniparser_getnsec (const dictionary *d)
 获取dictionary对象的section个数 更多...
 
const char * iniparser_getsecname (const dictionary *d, int n)
 获取dictionary对象的第n个section的名字(不能释放或修改返回的字符串!) 更多...
 
void iniparser_dump_ini (const dictionary *d, FILE *f)
 将dictionary保存到可加载的ini文件中 更多...
 
void iniparser_dumpsection_ini (const dictionary *d, const char *s, FILE *f)
 将dictionary的section保存到可加载的ini文件中 更多...
 
void iniparser_dump (const dictionary *d, FILE *f)
 将字典转储到已打开的文件指针中 更多...
 
int iniparser_getsecnkeys (const dictionary *d, const char *s)
 获取dictionary对象某个section下的key个数 更多...
 
const char ** iniparser_getseckeys (const dictionary *d, const char *s, const char **keys)
 获取dictionary对象某个section下所有的key 更多...
 
const char * iniparser_getstring (const dictionary *d, const char *key, const char *def)
 获取与key相关联的字符串值 更多...
 
int iniparser_getint (const dictionary *d, const char *key, int notfound)
 获取与键相关联的字符串,转换为长int类型 更多...
 
long int iniparser_getlongint (const dictionary *d, const char *key, long int notfound)
 获取与键相关联的字符串,转换为 long int类型 更多...
 
double iniparser_getdouble (const dictionary *d, const char *key, double notfound)
 获取与键相关联的字符串,转换为double类型 更多...
 
int iniparser_getboolean (const dictionary *d, const char *key, int notfound)
 获取与键相关联的字符串,然后转换为boolean类型 更多...
 
int iniparser_set (dictionary *ini, const char *entry, const char *val)
 设置dictionary对象的某个条目(section:key的值) 更多...
 
void iniparser_unset (dictionary *ini, const char *entry)
 删除dictionary中的一个条目(section:key) 更多...
 
int iniparser_find_entry (const dictionary *ini, const char *entry)
 查找dictionary中是否存在一个给定的条目(section:key) 更多...
 
dictionary * iniparser_load (const char *ininame)
 解析ini文件并返回已分配内存的dictionary对象 更多...
 
void iniparser_freedict (dictionary *d)
 释放与ini dictionary相关联的所有内存 更多...
 

详细描述

ini文件解析器.

作者
zhengchuangyong (zheng.nosp@m.chua.nosp@m.ngyon.nosp@m.g@em.nosp@m.bedsk.nosp@m.y.ne.nosp@m.t)
版本
1.0
日期
2021-09-22
修改日志:
Date Version Author Description
2021-09-22 1.0 zhengchuangyong 第一次发布,对ini配置文件的一些操作的封装.
作者
N. Devillard

函数说明

void iniparser_dump ( const dictionary *  d,
FILE *  f 
)

将字典转储到已打开的文件指针中

参数
d要保存的dictionary对象
f已打开的要转储到的文件指针

该函数将dictionary的内容逐行打印到提供的文件指针上。也可以指定输出文件为 stderrstdout 。此函数主要用于调试。

void iniparser_dump_ini ( const dictionary *  d,
FILE *  f 
)

将dictionary保存到可加载的ini文件中

参数
d要保存的dictionary对象
f已打开的要转储到的文件指针

该函数将dictionary保存到可加载的ini文件中,也可以指定输出文件为 stderrstdout .

void iniparser_dumpsection_ini ( const dictionary *  d,
const char *  s,
FILE *  f 
)

将dictionary的section保存到可加载的ini文件中

参数
d要保存的dictionary对象
s要保存的dictionary的section名
f已打开的要转储到的文件指针

该函数将dictionary的section保存到可加载的ini文件中,也可以指定输出文件为 stderrstdout .

int iniparser_find_entry ( const dictionary *  ini,
const char *  entry 
)

查找dictionary中是否存在一个给定的条目(section:key)

参数
ini要查找的dictionary对象
entry要查找的条目的名称
返回
int 存在返回1,否则返回0

该函数查找字典中是否存在一个给定的条目。由于sections被存储为具有NULL关联值的key,因此这是查询字典中是否存在sections的唯一方法。

void iniparser_freedict ( dictionary *  d)

释放与ini dictionary相关联的所有内存

参数
d要释放的dictionary对象

释放与ini dictionary相关联的所有内存。必须在dictionary对象退出当前上下文之前调用此函数。

int iniparser_getboolean ( const dictionary *  d,
const char *  key,
int  notfound 
)

获取与键相关联的字符串,然后转换为boolean类型

参数
d查询的字符串对象
key要查找的key
notfound当出现错误时要返回的值
返回
int 成功返回转换为boolean类型的key字符串值,失败返回notfound的值

此函数查询dictionary中的key。从ini文件中读取的一个key是"section:key"。如果找不到该key,则返回未找到的值。

如果匹配以下选项之一,则会找到真布尔值: -以"y"开头的字符串 -以"Y"开头的字符串 -以"t"开头的字符串 -以"T"开头的字符串 -以"1"开头的字符串

如果匹配以下选项之一,则会发现假布尔值: -以"n"开头的字符串 -以"N"开头的字符串 -以"f"开头的字符串 -以"F"开头的字符串 -以"0"开头的字符串

如果没有识别出布尔值,则返回的未找到的值不一定为0或1。

double iniparser_getdouble ( const dictionary *  d,
const char *  key,
double  notfound 
)

获取与键相关联的字符串,转换为double类型

参数
d查询的字符串对象
key要查找的key
notfound当出现错误时要返回的值
返回
double 成功返回转换为double类型的key字符串值,失败返回notfound的值

此函数查询dictionary中的key。从ini文件中读取的一个key是"section:key"。如果找不到该key,则返回未找到的值。

int iniparser_getint ( const dictionary *  d,
const char *  key,
int  notfound 
)

获取与键相关联的字符串,转换为长int类型

参数
d查询的字符串对象
key要查找的key
notfound当出现错误时要返回的值
返回
int 成功返回转换为int类型的key字符串值,失败返回notfound的值

此函数查询dictionary中的key。从ini文件中读取的一个key是"section:key"。如果找不到该key,则返回未找到的值。 支持的整数值包括通常的C表示法,因此支持十进制、八进制(以0开头)和十六进制(以0x开头)。示例:

  • "42" -> 42
  • "042" -> 34 (八进制 -> 十进制)
  • "0x42" -> 66 (十六进制 -> 十进制) 警告:转换可能会以多种方式溢出。转换完全外包给strtol(),请参阅相关的手册页以了解溢出处理。
long int iniparser_getlongint ( const dictionary *  d,
const char *  key,
long int  notfound 
)

获取与键相关联的字符串,转换为 long int类型

参数
d查询的字符串对象
key要查找的key
notfound当出现错误时要返回的值
返回
long int 成功返回转换为long int类型的key字符串值,失败返回notfound的值

此函数查询dictionary中的key。从ini文件中读取的一个key是"section:key"。如果找不到该key,则返回未找到的值。 支持的整数值包括通常的C表示法,因此支持十进制、八进制(以0开头)和十六进制(以0x开头)。示例:

  • "42" -> 42
  • "042" -> 34 (八进制 -> 十进制)
  • "0x42" -> 66 (十六进制 -> 十进制) 警告:转换可能会以多种方式溢出。转换完全外包给strtol(),请参阅相关的手册页以了解溢出处理。
int iniparser_getnsec ( const dictionary *  d)

获取dictionary对象的section个数

参数
d要检查的dictionary对象
返回
int 成功返回在dictionary中的section数,失败返回-1

该函数返回在dictionary中找到的section数.而关键存储"section:key",一个section的名称为“section" 在dictionary中存储的字符串:承认sections测试完成,从而测试看起来不包含一个冒号的条目。

在sections名字包含冒号的情况下,这显然失败了,但应该避免这一点。

const char** iniparser_getseckeys ( const dictionary *  d,
const char *  s,
const char **  keys 
)

获取dictionary对象某个section下所有的key

参数
d要检测的dictionary对象
s要检查的section名
keys存储key数组
返回
const char** 成功返回一个指向keys的二级指针,失败返回NULL

该函数获取dictionary对象某个section下所有的key,参数keys是一个数组指针,每个的大小通过iniparser_getsecnkeys函数确定.

const char* iniparser_getsecname ( const dictionary *  d,
int  n 
)

获取dictionary对象的第n个section的名字(不能释放或修改返回的字符串!)

参数
d要获取的dictionary对象
nsection数(从0到nsec-1)
返回
const char* 成功返回section名,失败返回NULL
int iniparser_getsecnkeys ( const dictionary *  d,
const char *  s 
)

获取dictionary对象某个section下的key个数

参数
d要检测的dictionary对象
s要检查的section名
返回
int 要检测的section下的key个数,失败返回0
const char* iniparser_getstring ( const dictionary *  d,
const char *  key,
const char *  def 
)

获取与key相关联的字符串值

参数
d查询的dictionary对象
key要查找的key
def当找不到key时,要返回默认值
返回
const char* 成功返回获取到的key字符串值,没有找到返回默认值

此函数查询dictionary中的key。从ini文件中读取的一个key是"section:key"。如果找不到该key, 则返回作为“def”传递的指针。返回的char指针指向dictionary中分配的字符串,不要释放或修改它。

dictionary* iniparser_load ( const char *  ininame)

解析ini文件并返回已分配内存的dictionary对象

参数
ininame要读取的ini文件的名
返回
dictionary* 返回新分配内存的dictionart对象地址,否则返回NULL

这是ini文件的解析器。调用此函数,并提供要读取的文件的名称。它返回一个不应该直接访问的dictionary对象,而是通过访问器函数来访问。 必须使用iniparser_freedict()释放返回的字典。

int iniparser_set ( dictionary *  ini,
const char *  entry,
const char *  val 
)

设置dictionary对象的某个条目(section:key的值)

参数
ini要修改的dictionary对象
entry要修改的条目(条目名称)
val要关联到该条目的新值
返回
int 成功返回0,否则返回-1

如果可以在dictionary中找到给定的条目,则将其修改以包含提供的值。如果找不到,则将创建该条目。可以将val设置为空。

void iniparser_unset ( dictionary *  ini,
const char *  entry 
)

删除dictionary中的一个条目(section:key)

参数
ini要修改的dictionary对象
entry要删除的条目(条目名称)

如果可以找到给定的条目,那么它将从dictionary中删除