c - 读取配置文件值错误

标签 c linux parsing configuration libconfig

我有以下 Config.cfg 文件,我想读取 Device 的值

[BBDD]
user=**
password=***
database=***
IPServidor=*
port=3***

[Device]
dev=8
Temperatura=5=1001
Humedad=7=1002
Link=8=1003
Volt=9=1004

[Device]
dev=10
Temperatura=5=1012
Humedad=7=1013
Link=8=1014
Volt=9=1015

所以我尝试使用 libconfig 库。我编写了以下代码,但它什么也没返回。我错过了什么吗?还是libconfig有问题?我也尝试过使用 glib,但由于相同的关键字 Device 我无法使用它。

#include <stdio.h> // standard input / output functions
#include <string.h> // string function definitions
#include <stdlib.h>
#include <libconfig.h>
#include <glib.h>

int main()
{
  config_t cfg; //returns all parameters in this structure
  config_setting_t *setting;
  const char *str1, *str2;
  int tmp;
  config_init(&cfg);
  if(config_read_file(&cfg, "Config.cfg"))
   {

    fprintf(stderr, "%s=%d\n", config_error_file(&cfg),config_error_line(&cfg),config_error_text(&cfg));
    config_destroy(&cfg);
    return(EXIT_FAILURE);
}
//Read the parameter group
setting = config_lookup(&cfg, "Device");
if (setting!= NULL)
{
    //Read the string
    if(config_setting_lookup_string(setting, "dev", &str1))
    {
        printf("\n Device: &s", str1);
    }
    else
    printf("\n No 'Device' setting in configuration file");
    printf("\n");
}
config_destroy(&cfg);

}

我尝试使用 Device 和 [Device] 作为关键字,还尝试使用 config_setting_lookup_string 和 config_setting_lookup_int 返回 dev 的值,但没有任何反应。我的命令返回一个简单的

Process returned 0. execution time: 0.115sec

最佳答案

您的配置似乎不是有效的 libconfig 配置文件。

检查libconfig documentation

关于c - 读取配置文件值错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17525263/

相关文章:

Python 表达式到 MathML

java - 我如何使用 REGEX 来解析逗号和换行符

date - Golang 日期解析

c - 在 C 编程方面需要一些帮助

c - 在函数内部创建的动态内存

regex - 在 VI 编辑器中将每个出现的正则表达式匹配替换为特定的正则表达式?

linux - awk:将日期字符串从 YYYYMMDD 格式化为 YYYY-MM-DD

c - 无法从被调用函数返回更新后的字符串并释放内存

c - debian 和 Redhat 之间的 malloc()/free() 行为不同

python - 针叶林 'i586-linux-gnu-gcc' : No such file or directory