https://www.cnblogs.com/kex1n/p/6651258.html
此开源库需要自己下源文件并编译, 作者提供了vs2008 的 sln , 本机 vs2012试过可编译
仿照做一个简单的读取配置文件程序
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
#include <stdio.h> #include <stdlib.h> #include <libconfig.h> int main(int argc, char **argv) { config_t cfg; config_setting_t *setting; const char *str; config_init(&cfg); /* Read the file. If there is an error, report it and exit. */ if(! config_read_file(&cfg, "CTP_config.cfg")) { fprintf(stderr, "%s:%d - %s\n", config_error_file(&cfg), config_error_line(&cfg), config_error_text(&cfg)); config_destroy(&cfg); return(EXIT_FAILURE); } setting = config_lookup(&cfg, "nickel"); if(setting != NULL) { const char *HeYun; double JiDieSlope; if(config_setting_lookup_string(setting, "HeYun", &HeYun)) printf("HeYun name: %s\n\n", HeYun); else fprintf(stderr, "No 'HeYun' setting in configuration file.\n"); if(config_setting_lookup_float(setting, "JiDieSlope", &JiDieSlope)) printf("JiDieSlope: %6.2f\n\n", JiDieSlope); else fprintf(stderr, "No 'JiDieSlope' setting in configuration file.\n"); if(config_setting_lookup_float(setting, "JiDieInvalid", &JiDieSlope)) printf("JiDieInvalid: %6.2f\n\n", JiDieSlope); else fprintf(stderr, "No 'JiDieInvalid' setting in configuration file.\n"); if(config_setting_lookup_float(setting, "ErCiJiDieDownPoint", &JiDieSlope)) printf("ErCiJiDieDownPoint: %6.2f\n\n", JiDieSlope); else fprintf(stderr, "No 'ErCiJiDieDownPoint' setting in configuration file.\n"); if(config_setting_lookup_float(setting, "ZhiSun", &JiDieSlope)) printf("ZhiSun: %6.2f\n\n", JiDieSlope); else fprintf(stderr, "No 'ZhiSun' setting in configuration file.\n"); putchar('\n'); } config_destroy(&cfg); getchar(); return(EXIT_SUCCESS); } |
配置文件 :
1 2 3 4 5 6 7 8 |
nickel = { HeYun = "ni1910"; JiDieSlope = -2.0; JiDieInvalid = 300.0; ErCiJiDieDownPoint = 100.0; ZhiSun = 100.0; }; |
注意如果要 config_setting_lookup_float , 数值即使是整数, 也写成带个小数点和0的形式 。