最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C語言Iniparser庫實現(xiàn)ini文件讀寫

 更新時間:2023年03月20日 14:50:21   作者:澆筑菜鳥  
iniparser是針對INI文件的解析器。ini文件則是一些系統(tǒng)或者軟件的配置文件。本文就來介紹一下如何利用Iniparser庫實現(xiàn)ini文件讀寫吧

一、概述

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

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

二、使用

下載

Github:https://github.com/ndevilla/iniparser

方式一

1.編譯

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

2.測試

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

3.測試結果

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); 
 
/* 創(chuàng)建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 寫入緩沖區(qū)
 * @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.文件目錄

4.編譯

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

5.測試效果

到此這篇關于C語言Iniparser庫實現(xiàn)ini文件讀寫的文章就介紹到這了,更多相關C語言 ini文件讀寫內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • c++中的string常用函數用法總結

    c++中的string常用函數用法總結

    以下是對c++中的string常用函數的用法進行了詳細的分析介紹,需要的朋友可以過來參考下
    2013-09-09
  • C++基于先序、中序遍歷結果重建二叉樹的方法

    C++基于先序、中序遍歷結果重建二叉樹的方法

    這篇文章主要介紹了C++基于先序、中序遍歷結果重建二叉樹的方法,結合實例形式分析了基于C++構建二叉樹的相關操作技巧,需要的朋友可以參考下
    2017-05-05
  • C++實現(xiàn)LeetCode(102.二叉樹層序遍歷)

    C++實現(xiàn)LeetCode(102.二叉樹層序遍歷)

    這篇文章主要介紹了C++實現(xiàn)LeetCode(102.二叉樹層序遍歷),本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下
    2021-07-07
  • Visual Studio新建類從默認internal改為public

    Visual Studio新建類從默認internal改為public

    本文將介紹如何將Visual Studio中的internal修飾符更改為public,以實現(xiàn)更廣泛的訪問和重用,需要的朋友們下面隨著小編來一起學習學習吧
    2023-09-09
  • C++實現(xiàn)簡單貪吃蛇游戲

    C++實現(xiàn)簡單貪吃蛇游戲

    這篇文章主要為大家詳細介紹了C++實現(xiàn)簡單貪吃蛇游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • C++面向對象編程之析構詳解

    C++面向對象編程之析構詳解

    這篇文章主要為大家詳細介紹了C++面向對象編程之析構,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • 手拉手教你如何理解c/c++中的指針

    手拉手教你如何理解c/c++中的指針

    當你對C越來越熟悉時,你會發(fā)現(xiàn)把與指針攪和在一起的"類型"這個概念分成"指針的類型"和"指針所指向的類型"兩個概念,是精通指針的關鍵點之一,這篇文章主要給大家介紹了關于c/c++中指針的相關資料,需要的朋友可以參考下
    2021-10-10
  • C++中的ilst使用以及模擬實現(xiàn)

    C++中的ilst使用以及模擬實現(xiàn)

    list是一個類模板,加<類型>實例化才是具體的類,可以在任意位置進行插入和刪除的序列式容器,本文將通過代碼示例給大家介紹一下C++中的ilst使用以及模擬實現(xiàn),需要的朋友可以參考下
    2023-08-08
  • Qt實現(xiàn)簡單動態(tài)時鐘

    Qt實現(xiàn)簡單動態(tài)時鐘

    這篇文章主要為大家詳細介紹了Qt實現(xiàn)簡單動態(tài)時鐘,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-07-07
  • c語言常見圖片格式判斷實例

    c語言常見圖片格式判斷實例

    這篇文章介紹了c語言常見圖片格式判斷實例,有需要的朋友可以參考一下
    2013-09-09

最新評論

六枝特区| 耿马| 沈阳市| 洪洞县| 孟津县| 陆良县| 遵义县| 凤山市| 安顺市| 芦山县| 高青县| 汝南县| 阿拉善盟| 丹凤县| 宁武县| 大厂| 泸西县| 恩施市| 黄梅县| 府谷县| 六盘水市| 长岛县| 山东| 雷州市| 谷城县| 柏乡县| 泸溪县| 泽库县| 横峰县| 三原县| 光泽县| 淮南市| 西乌珠穆沁旗| 那坡县| 东台市| 正宁县| 济阳县| 镇原县| 广灵县| 玉屏| 绍兴市|