C Programer  - 讨论区

标题:GLib库Key-value file parser模块编程示例

2014年02月09日 星期日 11:43

所谓Key-value file,就是我们常见的.ini格式的配置文件,这种文件在很多程序中都有应用,格式简单,人类友好。GLib提供了对于此中配置文件的读取API,示例如下:

#include <stdio.h>
#include <glib.h>
#include <string.h>
#include <stdlib.h>

int main(int argc,char **argv) {

    if(argc != 2) {
        fprintf(stderr,"usage: %s filename\n",argv[0]);
        return -1;
    }
    char *filename=argv[1];
    GKeyFile *kf=g_key_file_new();
    GError *err=NULL;
    if(!g_key_file_load_from_file(
                kf,filename,G_KEY_FILE_NONE,&err)) {
        fprintf(stderr,
        "g_key_file_load_from_file: %s\n",err->message);
        g_error_free(err);
        return -1;
    }
    gsize len=0;
    gchar **groups=g_key_file_get_groups(kf,&len);
    for(gsize i=0;i<len;i++) {
        printf("group: %s\n",groups[i]);
        gsize nkey=0;
        gchar **keys=g_key_file_get_keys(
                kf,groups[i],&nkey,&err);
        if(err != NULL) {
            fprintf(stderr,
            "g_key_file_get_keys: %s\n",err->message);
            g_error_free(err);
            return -1;
        }
        for(gsize ki=0;ki<nkey;ki++) {
            printf("key: %s\n",keys[ki]);
            gchar *val=g_key_file_get_string(
                    kf,groups[i],keys[ki],&err);
            if(err != NULL ) {
                fprintf(stderr,
                "g_key_file_get_keys: %s\n",err->message);
                g_error_free(err);
                return -1;
            }
            printf("value of key %s : %s\n",keys[ki],val);
            g_free(val);

        }
        g_strfreev(keys);
    }
    g_strfreev(groups);
    g_key_file_free(kf);

    return 0;
}

参考资料:

https://developer.gnome.org/glib/2.39/glib-Key-value-file-parser.html

如下红色区域有误,请重新填写。

    你的回复:

    请 登录 后回复。还没有在Zeuux哲思注册吗?现在 注册 !

    Zeuux © 2024

    京ICP备05028076号