1) g_key_file_new()和g_key_file_load_from_file()这两个接口的含义有些像FILE*
fp和fopen(),但是它们有着特别的地方,就是它在读文件的时候,不是什么都读取的。而是根据自己识别的标记读取,然后根据相应的接口函数分离出组
(group)、关键字(key)和关键字的值(integer\string\double等类型)。所以这就要求文件在写的时候,要注意特有的格式。
说起来有点相XML,不过它比XML简单多得多。下面就用简单的代码解释一下:
1、建立一个有标记的文件:
-
/*------ data.txt -------*/
-
-
[one]
-
key_one = 1
-
[tow]
-
key_tow = 2
-
[three]
-
key_three = 3
2、简单的代码代码实现:
-
/*---- main.c -----*/
-
-
#include
-
#include
-
#include
-
-
#define file_name "/home/wutangzhi/wtz/test_dir/test_file/data.txt"
-
-
int main(int argc, char** argv)
-
{
-
char** groups = NULL;
-
char** key = NULL;
-
GKeyFile* keyfile;
-
gsize length = 0;
-
GError* error = NULL;
-
GList* list_group = NULL;
-
-
keyfile = g_key_file_new();
-
g_key_file_load_from_file(keyfile, file_name, G_KEY_FILE_NONE, &error);
-
groups = g_key_file_get_groups(keyfile, &length);
-
-
gsize length_keys = 0;
-
gsize i = 0;
-
for(i = 0; i < length; i++)
-
{
-
key = g_key_file_get_keys(keyfile, groups[i], &length_keys, &error);
-
gsize j = 0;
-
for(j = 0; j < length_keys; j++)
-
{
-
printf("key = %s \n", key[j]);
-
double value = g_key_file_get_double(keyfile, groups[i], key[j], &error);
-
printf("key_string = %f\n", value);
-
}
-
}
-
-
return 0;
-
}
阅读(1410) | 评论(0) | 转发(0) |