체크 아웃 CCANciniparser을 추천합니다. 이것의 포크는 the original iniparser (더 이상 유지 관리되지 않음)이며 INI 스타일 구성 파일을 쉽게 구문 분석합니다.예 (거의 단위 테스트에 의해 미러링)에서
코드 :
#include <stdio.h>
#include <stdbool.h>
#include <ccan/ciniparser/ciniparser.h>
#define CONFIG_FILE "/etc/config.ini"
int main(int argc, char *argv[])
{
dictionary *d;
char *val1;
bool val2;
double val3;
int val4;
d = ciniparser_load(CONFIG_FILE);
if (d == NULL)
return 1;
val1 = ciniparser_getstring(d, "daemon:pidfile", NULL);
val2 = ciniparser_getboolean(d, "daemon:debug", false);
val3 = ciniparser_getdouble(d, "daemon:maxload", 3.5);
val4 = ciniparser_getint(d, "daemon:maxchild", 5);
ciniparser_freedict(d);
return 0;
}
물론, 당신은 당신의 나무와 #include "iniparser.h"
에 필요한 몇 개의 파일을 삭제할 수 있습니다, 다른 CCAN 모듈에 대한 종속성이없는하지 않는 한 당신은 단위 테스트를하고 싶습니다.
샘플 구성은 다음과 같습니다
[stooges]
larry=larry_stooge
curly=curly_stooge
moe=moe_stooge
shemp=questionable
[cartoons]
tom_hates=jerry
A는 정적으로 당신이 (즉 strdup()
) (수정하지 않고) 그대로 사용하거나 할당하고 중복 것이라고 questionable
를 할당 얻을 것 stooges:shemp
의 값을 얻기. 그것보다 훨씬 쉽지는 않습니다. 간단한 뮤텍스와 스레드 안전성을 사용하여 사전에 대한 액세스를 줄이십시오.
CCAN은 포괄적 인 C 아카이브 네트워크입니다. CPAN
, 그냥 C
라고 생각하십시오. 그것의 프로젝트 Rusty Russell은 마침내 약간의 견인력을 얻고있다.
면책 조항 : 모듈을 유지 관리합니다.
왜 파일을 읽으려면 별도의 언어가 필요합니까? 구성을 텍스트 파일에 저장하고 C 프로그램에서 읽습니다. –
스크립트 파일에서 데이터 구조를 미러링하려면 어떻게해야합니까? 예를 들어 구조 배열을 가지고 있다면 쉽게 저장하고로드 할 수 있습니까? – James
@James : 데이터 구조를 저장하려면 XML 또는 YAML이 일반 텍스트보다 낫습니다. – FrustratedWithFormsDesigner