Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3108962
  • 博文数量: 396
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 4209
  • 用 户 组: 普通用户
  • 注册时间: 2016-07-04 13:04
文章分类

全部博文(396)

文章存档

2022年(1)

2021年(2)

2020年(8)

2019年(24)

2018年(135)

2017年(158)

2016年(68)

我的朋友

分类: 嵌入式

2018-10-29 22:09:50

1)  g_key_file_new()和g_key_file_load_from_file()这两个接口的含义有些像FILE* fp和fopen(),但是它们有着特别的地方,就是它在读文件的时候,不是什么都读取的。而是根据自己识别的标记读取,然后根据相应的接口函数分离出组 (group)、关键字(key)和关键字的值(integer\string\double等类型)。所以这就要求文件在写的时候,要注意特有的格式。 说起来有点相XML,不过它比XML简单多得多。下面就用简单的代码解释一下:

1、建立一个有标记的文件:
  1. /*------   data.txt -------*/

  2. [one]
  3. key_one = 1
  4. [tow]
  5. key_tow = 2
  6. [three]
  7. key_three = 3

2、简单的代码代码实现:

  1. /*---- main.c -----*/

  2. #include 
  3. #include 
  4. #include 

  5. #define file_name  "/home/wutangzhi/wtz/test_dir/test_file/data.txt"

  6. int main(int argc, char** argv)
  7. {
  8.     char** groups = NULL;
  9.     char** key = NULL;
  10.     GKeyFile* keyfile;
  11.     gsize length = 0;
  12.     GError* error = NULL;
  13.     GList* list_group = NULL;

  14.     keyfile = g_key_file_new();
  15.     g_key_file_load_from_file(keyfile, file_name, G_KEY_FILE_NONE, &error);
  16.     groups = g_key_file_get_groups(keyfile, &length);

  17.     gsize length_keys = 0;
  18.     gsize i = 0;
  19.     for(i = 0; i < length; i++)
  20.     {
  21. key = g_key_file_get_keys(keyfile, groups[i], &length_keys, &error);
  22.         gsize j = 0;
  23.         for(j = 0; j < length_keys; j++)
  24.         {
  25.             printf("key = %s \n", key[j]);
  26.             double value = g_key_file_get_double(keyfile, groups[i], key[j], &error);
  27.             printf("key_string = %f\n", value);
  28.         }
  29.     }

  30.     return 0;
  31. }
阅读(1410) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~