[tcp]
port = 8000
ip = 127.0.0.1
family = AF_INET
[serial port]
speed = 9600
| 函數 | 用途 |
|---|---|
dictionary* iniparser_load(filename) | 解析文件,返回字典 |
void iniparser_freedict(dict) | 釋放字典 |
int iniparser_getint(dict, "sec:key", default) | 獲取整數 |
char* iniparser_getstring(dict, "sec:key", default) | 獲取字符串 |
double iniparser_getdouble(...) | 獲取浮點數 |
int iniparser_getboolean(...) | 獲取布爾值 |
int iniparser_set(dict, "sec:key", value) | 設置值 |
void iniparser_unset(dict, "sec:key") | 刪除鍵 |
void iniparser_dump(dict, FILE*) | 導出文本 |
tar -zxvf iniparser-3.1.tar.gz
cd iniparser-3.1 && make
# 生成 libiniparser.a / .so
cp src/iniparser.h src/dictionary.h /usr/local/include/
cp libiniparser.a /usr/local/lib/
#include <stdio.h>
#include <stdlib.h>
#include "iniparser.h"
int main() {
dictionary *ini = iniparser_load("config.ini");
if (!ini) { fprintf(stderr, "load fail\n"); return 1; }
int port = iniparser_getint(ini, "tcp:port", -1);
char *ip = iniparser_getstring(ini, "tcp:ip", NULL);
int speed = iniparser_getint(ini, "serial port:speed", -1);
printf("TCP %s:%d\n", ip, port);
printf("Serial speed: %d\n", speed);
iniparser_freedict(ini);
return 0;
}
gcc demo.c -o demo -liniparser
./demo
讓 C 專案擁有類似高級語言的配置文件管理能力,避免硬編碼參數,極大提升可維護性。