讀取帶有標記檔案的函數介面。

來源:互聯網
上載者:User
*引用本文請註明來自 blog.csdn.net/wtz1985    

        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 <stdlib.h>
  3. #include <stdio.h>
  4. #include <glib.h>
  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. }

3、顯示結果:

  1. key = key_one 
  2. key_string = 1.000000
  3. key = key_tow 
  4. key_string = 2.000000
  5. key = key_three 
  6. key_string = 3.000000

       這個函數介面可以把根據屬性的不同可以不同的讀取,在適當的時候它是相當有用的,比如單位換算。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.