У меня есть следующий Config.cfg
[Power]
Power8=8
Temp=5=1001
Hum=7=1002
Link=8=1003
Vol=9=1004
[Power]
Power10=10
Temp=5=1012
Hum=7=1013
Link=8=1014
Vol=9=1015
и с использованием glib я хочу прочитать значения каждой силы. Я хочу что-то вроде «если Power8 = 8, то верните temp, hum, Link, Vol», еще то же самое для Power10 = 10.
Я написал эту функцию
int read_config()
{
GKeyFile *keyfile;
GKeyFileFlags flags;
GError *error = NULL;
gsize length;
gchar *temperatura, *humedad, *link, *voltage;
// Create a new GKeyFile object and a bitwise list of flags.
keyfile = g_key_file_new ();
flags = G_KEY_FILE_KEEP_COMMENTS | G_KEY_FILE_KEEP_TRANSLATIONS;
// Load the GKeyFile from keyfile.conf or return.
if (!g_key_file_load_from_file (keyfile, "/home/pi/Desktop/Config.cfg", flags, &error))
{
g_error (error->message);
return -1;
}
printf("[Power]\n");
if(g_key_file_get_integer(keyfile,"Power","Power8",NULL) == 8)
{
temperatura=g_key_file_get_string(keyfile,"Power","Temp",NULL);
humedad=g_key_file_get_string(keyfile,"Power","Hum",NULL);
link=g_key_file_get_string(keyfile,"Power","Link",NULL);
voltage=g_key_file_get_string(keyfile,"Power","Volt",NULL);
printf("Power8:%d\n",g_key_file_get_integer(keyfile,"Power","Power8",NULL));
printf("Temp:%s\n",temperatura);
printf("Hum:%s\n",humedad);
printf("Link:%s\n",link);
printf("Vol:%s\n",voltage);
}
else
{
temperatura=g_key_file_get_string(keyfile,"Power","Temp",NULL);
humedad=g_key_file_get_string(keyfile,"Power","Hum",NULL);
link=g_key_file_get_string(keyfile,"Power","Link",NULL);
voltage=g_key_file_get_string(keyfile,"Power","Volt",NULL);
printf("Power10:%d\n",g_key_file_get_integer(keyfile,"Power","Power10",NULL));
printf("Temp:%s\n",temperatura);
printf("Hum:%s\n",humedad);
printf("Link:%s\n",link);
printf("Vol:%s\n",voltage);
}
}
Но он возвращает мне значения Power10, а также Vol=(Null)
[Power]
Power8=8
Temp=5=1012
Hum=7=1013
Link=8=1014
Vol=(Null)
В чем проблема?