您好,登錄后才能下訂單哦!
這篇“怎么使用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.測試結果
4.注意事項
使用鏈接文件時,可以參考 example 目錄下的 Makefile 文件
此方法使用比較簡單,直接將 src 目錄下的文件拷貝到工程中即可,使用方式和自己編寫的 .c 和 .h 文件一樣
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.文件目錄
4.編譯
gcc test.c dictionary.c iniparser.c -o test
5.測試效果
以上就是關于“怎么使用C語言Iniparser庫實現ini文件讀寫”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。