inih介绍
简介:
INIH是一个轻量级的开源C语言库,专门用于解析.INI
格式的配置文件。它通过逐行读取文本,识别键值对(key=value
)和节([section]
),帮助开发者轻松管理配置文件。
核心特性:
- 轻量高效:代码简洁,无外部依赖,适合资源受限的嵌入式系统。
- 跨平台兼容:支持Windows、Linux等操作系统。
- 易用API:提供
GetInteger
、GetString
等方法直接读取配置值。 - 错误处理:内置解析错误检测机制,提高健壮性。
- 格式兼容:支持Python的ConfigParser风格及RFC 822多行语法。
应用场景:
- 嵌入式系统:存储设备参数(如GPIO引脚配置)。
- 桌面应用:保存用户偏好(如界面主题、语言设置)。
- 服务器软件:动态管理配置(如端口号、日志级别)。
- 游戏开发:加载关卡数据或玩家设置。
安装:
git clone https://github.com/benhoyt/inih.git
示例代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "ini.h"typedef struct
{int version;const char* name;const char* email;
} configuration;static int handler(void* user, const char* section, const char* name,const char* value)
{configuration* pconfig = (configuration*)user;#define MATCH(s, n) strcmp(section, s) == 0 && strcmp(name, n) == 0if (MATCH("protocol", "version")) {pconfig->version = atoi(value);} else if (MATCH("user", "name")) {pconfig->name = strdup(value);} else if (MATCH("user", "email")) {pconfig->email = strdup(value);} else {return 0; /* unknown section/name, error */}return 1;
}int main(int argc, char* argv[])
{configuration config;if (ini_parse("test.ini", handler, &config) < 0) {printf("Can't load 'test.ini'\n");return 1;}printf("Config loaded from 'test.ini': version=%d, name=%s, email=%s\n",config.version, config.name, config.email);return 0;
}
gcc main.c ini.c -o main
觉得有帮助的话,打赏一下呗。。
需要商务合作(定制程序)的欢迎私信!!