- 论坛徽章:
- 4
|
回复 #1 xfly_t 的帖子
可以试试FastDFS中的ini reader,完全用C编写,支持一个key出现多次的情况,查找key时采用折半查找法,性能应该很不错!
下载地址:http://code.google.com/p/fastdfs/downloads/list
V1.6下载链接:http://fastdfs.googlecode.com/files/FastDFS_v1.6.tar.gz
common目录下的ini_file_reader.h和ini_file_reader.c
调用示例:
IniItemInfo *items;
int nItemCount;
int result;
char *ppTrackerServers[FDFS_MAX_TRACKERS];
int tracker_server_count;
int max_connections;
char *conf_filename;
bool disabled;
int i;
conf_filename = "sample.ini";
if ((result=iniLoadItems(conf_filename, &items, &nItemCount)) != 0)
{
printf("file: "__FILE__", line: %d, " \
"load from ini file \"%s\" fail, " \
"error code: %d", \
__LINE__, conf_filename, result);
return result;
}
pGroupName = iniGetStrValue("group_name", items, nItemCount);
if (pGroupName == NULL)
{
iniFreeItems(items);
printf("file: "__FILE__", line: %d, " \
"conf file \"%s\" must have item " \
"\"group_name\"!", \
__LINE__, conf_filename);
return ENOENT;
}
max_connections = iniGetIntValue("max_connections", \
items, nItemCount, 256);
disabled = iniGetBoolValue("disabled", items, nItemCount);
if ((tracker_server_count=iniGetValues("tracker_server", \
items, nItemCount, ppTrackerServers, \
FDFS_MAX_TRACKERS)) <= 0)
{
iniFreeItems(items);
printf("file: "__FILE__", line: %d, " \
"conf file \"%s\", get item \"tracker_server\" fail", \
__LINE__, filename);
return ENOENT;
}
for (i=0; i<tracker_server_count; i++)
{
printf("%d. %s\n", i+1, ppTrackerServers);
}
iniFreeItems(items);
return 0; |
|