中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么使用C語言Iniparser庫實現ini文件讀寫

發布時間:2023-03-20 15:31:26 來源:億速云 閱讀:307 作者:iii 欄目:開發技術

這篇“怎么使用C語言Iniparser庫實現ini文件讀寫”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“怎么使用C語言Iniparser庫實現ini文件讀寫”文章吧。

    一、概述

    iniparser是針對INI文件的解析器。ini文件則是一些系統或者軟件的配置文件。iniparser庫的API可以對ini文件(配置文件)進行解析、設置、刪除等操作。

    常見的 ini 讀寫開源庫有:minIni、inifile、iniparser

    二、使用

    方式一

    1.編譯

    下載后進入文件根目錄,使用 make 命令編譯,編譯完成后會生成 libiniparser.a 和 libiniparser.so.1 文件

    2.測試

    iniparser 提供了測試程序,進入 example 目錄,使用 make命令編譯,完成后會生成 iniexample 執行文件

    3.測試結果

    怎么使用C語言Iniparser庫實現ini文件讀寫

    4.注意事項

    使用鏈接文件時,可以參考 example 目錄下的 Makefile 文件

    方式二

    此方法使用比較簡單,直接將 src 目錄下的文件拷貝到工程中即可,使用方式和自己編寫的 .c 和 .h 文件一樣

    三、API函數

    iniparser.h

    /* 獲取dictionary對象的section個數 */
    int iniparser_getnsec(dictionary *d);
     
    /* 獲取dictionary對象的第n個section的名字 */
    char * iniparser_getsecname(dictionary *d, int  n);
     
    /* 保存dictionary對象到file */
    void iniparser_dump_ini(dictionary * d, FILE * f);  
     
    /* 保存dictionary對象一個section到file */
    void iniparser_dumpsection_ini(dictionary * d, char * s, FILE * f); 
     
    /* 打印 ini 文件內容 */
    void iniparser_dump(dictionary * d, FILE * f);  
     
    /* 獲取dictionary對象某個section下的key個數 */
    int iniparser_getsecnkeys(dictionary * d, char * s); 
     
    /* 獲取dictionary對象某個section下所有的key */
    char ** iniparser_getseckeys(dictionary * d, char * s); 
     
    /* 返回dictionary對象的section:key對應的字串值 */
    char * iniparser_getstring(dictionary * d, const char * key, char * def);   
     
    /* 返回idictionary對象的section:key對應的整形值 */
    int iniparser_getint(dictionary * d, const char * key, int notfound); 
     
    /* 返回dictionary對象的section:key對應的雙浮點值 */
    double iniparser_getdouble(dictionary * d, const char * key, double notfound);  
     
    /* 返回dictionary對象的section:key對應的布爾值 */
    int iniparser_getboolean(dictionary * d, const char * key, int notfound); 
     
    /* 設置dictionary對象的某個section:key的值 */
    int iniparser_set(dictionary * ini, const char * entry, const char * val); 
     
    /* 刪除dictionary對象中某個section:key */
    void iniparser_unset(dictionary * ini, const char * entry); 
     
    /* 判斷dictionary對象中是否存在某個section:key */
    int iniparser_find_entry(dictionary * ini, const char * entry) ; 
     
    /* 解析dictionary對象并返回(分配內存)dictionary對象 */
    dictionary * iniparser_load(const char * ininame); 
     
    /* 釋放dictionary對象(內存) */
    void iniparser_freedict(dictionary * d);

    dictionary.h

    /* 計算關鍵詞的hash值  
    unsigned dictionary_hash(const char * key); 
     
    /* 創建dictionary對象 */
    dictionary * dictionary_new(int size);  
     
    /* 刪除dictionary對象 */
    void dictionary_del(dictionary * vd); 
     
    /* 獲取dictionary對象的key值 */
    char * dictionary_get(dictionary * d, const char * key, char * def); 
     
    /* 設置dictionary對象的key值 */
    int dictionary_set(dictionary * vd, const char * key, const char * val); 
     
    /* 刪除dictionary對象的key值 */
    void dictionary_unset(dictionary * d, const char * key); 
     
    /* 保存dictionary對象 */
    void dictionary_dump(dictionary * d, FILE * out);

    四、演示

    1.test.ini 文件

    #
    # 測試文件
    #
     
    [Node]
    Test                           = 1234

    2.test.c

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <unistd.h>
     
    #include "iniparser.h"
     
     
    #define FILE_INI "test.ini"
     
    /**
     * @brief 讀取 ini 文件的配置信息
     * 
     * @param read_buf 讀取緩沖去
     * @param return 返回操作結果
     */
    int get_ini_info(int *read_buf)
    {
        dictionary  *ini;
     
        ini = iniparser_load(FILE_INI);
        if (ini==NULL) {
            fprintf(stderr, "cannot parse file: %s\n", FILE_INI);
            return -1;
        }
     
        /* 打印文件內容 */
        // iniparser_dump(ini, stderr);
     
        /* 讀取壓力等級的判斷信息 */
        *read_buf = iniparser_getint(ini, "node:test", -1);
     
        iniparser_freedict(ini);
        return 0;
    }
     
    /**
     * @brief 寫入 ini 文件的配置信息
     * 
     * @param write_buf 寫入緩沖區
     * @param return 返回操作結果
     */
    int set_ini_info(const char *write_buf)
    {
        dictionary  *ini;
        FILE *fp = NULL;
     
        ini = iniparser_load(FILE_INI);
        if (ini==NULL) {
            fprintf(stderr, "cannot parse file: %s\n", FILE_INI);
            return -1;
        }
     
        /* 寫入壓力等級的判斷信息 */
        iniparser_set(ini, "node:test", write_buf);
     
        /* 將信息保存到文件中 */
        fp = fopen(FILE_INI, "w");
        if( fp == NULL ) {
            fprintf(stderr, "stone:fopen error!\n");
            return -1;
        }
        iniparser_dump_ini(ini, fp);
     
        fclose(fp);
        iniparser_freedict(ini);
        return 0;
    }
     
    int main (int argc, char **argv)
    {
        int num = 0;
        set_ini_info("1234");
        get_ini_info(&num);
        printf("date is: %d \n", num);
    }

    3.文件目錄

    怎么使用C語言Iniparser庫實現ini文件讀寫

    4.編譯

    gcc test.c dictionary.c iniparser.c -o test

    5.測試效果

    怎么使用C語言Iniparser庫實現ini文件讀寫

    以上就是關于“怎么使用C語言Iniparser庫實現ini文件讀寫”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    大新县| 岑溪市| 奉节县| 松滋市| 汾西县| 泊头市| 河东区| 中阳县| 伽师县| 长阳| 中卫市| 都匀市| 宜章县| 阿荣旗| 普陀区| 察雅县| 东阳市| 麻栗坡县| 象山县| 邮箱| 吉林市| 临高县| 通化县| 新蔡县| 泾川县| 金昌市| 锦州市| 呼和浩特市| 长沙县| 和平县| 全南县| 上虞市| 抚宁县| 宁波市| 新邵县| 肇东市| 海兴县| 临武县| 密山市| 纳雍县| 呼和浩特市|