函数简介
g_key_file_load_from_file
g_key_file_load_from_file()
是 GLib 库中的一个函数,用于从指定的文件路径加载一个键值对文件(通常是一个.ini
风格的配置文件)。这个函数是GKeyFile
结构体相关API的一部分,GKeyFile
用于解析和生成.ini
风格的配置文件。下面是
g_key_file_load_from_file()
函数的基本使用方法会体现在下面的ini文件的读写测试中。
g_key_file_set_string
g_key_file_set_string()
是 GLib 库中的一个函数,用于在GKeyFile
结构中设置一个字符串值。这个函数通常用于在内存中修改或创建键值对,然后可以将这些更改保存回文件。
g_key_file_get_string()
是 GLib 库中的一个函数,用于从GKeyFile
结构中获取指定节(section)和键(key)对应的字符串值。
写一个ini文件
#include <glib.h>
#include <stdio.h> int ini_write(void) { GKeyFile *key_file; GError *error = NULL; gboolean result; // 创建一个 GKeyFile 实例 key_file = g_key_file_new(); // 设置一个键值对 g_key_file_set_string(key_file, "ExampleSection", "ExampleKey", "ExampleValue"); // 可以继续设置更多的键值对 g_key_file_set_string(key_file, "AnotherSection", "AnotherKey", "AnotherValue"); // 将更改保存到文件 result = g_key_file_save_to_file(key_file, "example.ini", &error); if (!result) { // 处理保存错误 fprintf(stderr, "Error saving key file: %s\n", error->message); g_error_free(error); return 1; } // 释放 GKeyFile 实例 g_key_file_free(key_file); return 0;
}
调用函数ini_write后,会生成一个example.ini文件。内容如下所示:
[ExampleSection]
ExampleKey=ExampleValue[AnotherSection]
AnotherKey=AnotherValue
读ini文件测试
本函数读去上面ini_write函数的生成的文件example.ini中的值,代码如下:
#include <glib.h> int ini_read(void) { GKeyFile *key_file; GError *error = NULL; gboolean result; // 创建一个 GKeyFile 实例 key_file = g_key_file_new(); // 从文件加载键值对 result = g_key_file_load_from_file(key_file, "example.ini", 0, &error); if (!result) { // 处理错误 g_print("Error loading key file: %s\n", error->message); g_error_free(error); return 1; } // 在这里,你可以使用 g_key_file_get_string()、g_key_file_get_integer() 等函数来访问键值对 // 例如: char *value;value = g_key_file_get_string(key_file, "ExampleSection", "ExampleKey", &error); if (value) { g_print("Value: %s\n", value); g_free(value); // 记得释放获取到的字符串 } else { // 处理错误 g_print("Error getting key: %s\n", error->message); g_error_free(error); } value = g_key_file_get_string(key_file, "AnotherSection", "AnotherKey", &error); if (value) { g_print("Value: %s\n", value); g_free(value); // 记得释放获取到的字符串 } else { // 处理错误 g_print("Error getting key: %s\n", error->message); g_error_free(error); } // 释放 GKeyFile 实例和相关资源 g_key_file_free(key_file); return 0;
}
调用ini_read进行测试,在测试前,先执行ini_write函数生成文件example.ini,结果如下所示:
由结果可知,读取到了ini文件中的值。