在嵌入式开发、桌面应用或系统工具中,我们经常需要读取配置文件。INI 文件因其结构简单、易于阅读而被广泛使用。对于 C 语言开发者来说,inih 库(也称为 INI Not Invented Here)是一个非常轻量、高效且易于集成的开源库,专门用于解析 INI 格式的配置文件。
本文将手把手教你如何在 C 项目中使用 inih 库 来读取和处理 INI 配置文件,即使你是编程新手也能轻松上手!

inih 是一个用纯 C 编写的单文件 INI 解析器,体积小(仅几百行代码)、无外部依赖、线程安全,并支持标准 INI 语法(包括节 [section]、键值对 key=value、注释等)。它非常适合资源受限的环境,比如嵌入式系统。
它的核心函数是 ini_parse(),通过回调机制将解析到的每个键值对传递给用户自定义的处理函数。
你可以从 GitHub 官方仓库下载:https://github.com/benhoyt/inih
只需要两个文件:
ini.h —— 头文件ini.c —— 实现文件将这两个文件复制到你的 C 项目目录中即可。
假设我们要读取一个名为 config.ini 的配置文件,内容如下:
[database]host = localhostport = 3306username = adminpassword = secret123[server]ip = 192.168.1.100port = 8080enable_ssl = true我们需要实现一个回调函数,每当 inih 解析到一个键值对时,就会调用这个函数。
#include <stdio.h>#include <stdlib.h>#include <string.h>#include "ini.h"// 定义结构体存储配置typedef struct { char db_host[64]; int db_port; char db_user[32]; char db_pass[32]; char srv_ip[16]; int srv_port; int ssl_enabled;} config_t;// 回调函数:处理每个键值对static int handler(void* user, const char* section, const char* name, const char* value){ config_t* pconfig = (config_t*)user; #define MATCH(s, n) strcmp(section, s) == 0 && strcmp(name, n) == 0 if (MATCH("database", "host")) { strncpy(pconfig->db_host, value, sizeof(pconfig->db_host) - 1); } else if (MATCH("database", "port")) { pconfig->db_port = atoi(value); } else if (MATCH("database", "username")) { strncpy(pconfig->db_user, value, sizeof(pconfig->db_user) - 1); } else if (MATCH("database", "password")) { strncpy(pconfig->db_pass, value, sizeof(pconfig->db_pass) - 1); } else if (MATCH("server", "ip")) { strncpy(pconfig->srv_ip, value, sizeof(pconfig->srv_ip) - 1); } else if (MATCH("server", "port")) { pconfig->srv_port = atoi(value); } else if (MATCH("server", "enable_ssl")) { pconfig->ssl_enabled = (strcmp(value, "true") == 0 || strcmp(value, "1") == 0); } else { return 0; // 未知的 section/name,忽略 } return 1; // 成功处理}int main(){ config_t config = {0}; // 初始化为零 // 调用 inih 解析器 if (ini_parse("config.ini", handler, &config) < 0) { printf("无法打开配置文件 'config.ini'\n"); return 1; } // 打印解析结果 printf("=== 数据库配置 ===\n"); printf("Host: %s\n", config.db_host); printf("Port: %d\n", config.db_port); printf("User: %s\n", config.db_user); printf("\n=== 服务器配置 ===\n"); printf("IP: %s\n", config.srv_ip); printf("Port: %d\n", config.srv_port); printf("SSL 启用: %s\n", config.ssl_enabled ? "是" : "否"); return 0;}在终端中执行以下命令编译程序(假设主文件为 main.c):
gcc main.c ini.c -o myapp然后运行:
./myapp输出结果应为:
=== 数据库配置 ===Host: localhostPort: 3306User: admin=== 服务器配置 ===IP: 192.168.1.100Port: 8080SSL 启用: 是config.ini 在程序运行目录下,或使用绝对路径。ini_parse 返回值:0 表示成功,-1 表示文件打不开,正数表示出错的行号。通过本教程,你已经掌握了如何使用 C语言解析INI文件 的 inih库。这个 轻量级INI解析器 不仅简单易用,而且性能优异,非常适合各种 C 项目。无论你是开发嵌入式设备还是桌面工具,inih 都能帮你轻松管理配置。
现在就去试试吧!你也可以将此 inih使用教程 收藏起来,作为日后开发的参考。
本文由主机测评网于2025-12-23发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://www.vpshk.cn/20251211924.html