2010-02-12 54 views
16

假設我有一個簡單的配置文件,我的c程序需要讀取/解析。當我需要在linux下解析一個簡單的配置文件時,需要什麼樣的庫文件?

比方說,它看起來像這樣一點:

#Some comment 
key1=data1 
key2=data2 

有沒有辦法,我可以改用寫我自己的解析器的標準C的lib?

感謝 約翰


:今天,我有我自己的小解析器,但必須有一些標準庫,解決了這個簡單的問題。

+0

類似的問題:http://stackoverflow.com/questions/1417765/parse-config-file-in-c-c。沒有標準的C庫可以做到這一點。如果你的需求很簡單並且不太可能改變,編寫你自己的解析器可能不是一個壞主意。 – 2010-02-12 09:05:02

+0

雖然這不是OP所要求的,但FWIW,有時候使用'system()'調用的簡單的shell'sed' /'awk'單線程可能非常方便。 – Zaxter 2017-08-30 13:18:56

回答

7

libconfig但它確實比你問

+0

有點矯枉過正,但我​​喜歡它。 – Johan 2010-02-12 09:42:33

6

爲什麼不只是使用GLIB?

在無數其他的東西有庫函數解析INI像配置文件:

http://library.gnome.org/devel/glib/2.22/glib-Key-value-file-parser.html

除此之外,該機還支持數據類型(列表,哈希表,字符串,緩存),線程,與平臺無關的抽象,單元測試,錯誤處理和其他很多好東西。

對我來說這是最有用的C庫,我需要有一個非常好的理由來編寫一個C程序而不使用這個庫。

+0

鏈接已損壞。 – gsingh2011 2013-07-21 21:43:17

+1

此鏈接(現在...):關鍵值文件分析器(https://developer.gnome.org/glib/2.28/glib-Key-value-file-parser.html) – 2013-08-26 13:34:40

6

我覺得值得一提的libConfuse這裏,並引用其描述:

libConfuse是一個配置文件解析庫,根據ISC許可證的條款授權,並寫入C.它支持段和( (字符串,整數,浮點數,布爾值或其他部分)以及一些其他功能(如單/雙引號字符串,環境變量擴展,函數和嵌​​套包含語句)。它使得使用簡單的API將配置文件功能添加到程序變得非常容易。

libConfuse的目標不是配置文件解析器庫有很多功能。相反,它的目的是易於使用並快速與代碼集成。之前libConfuse被稱爲libcfg,但其名稱已更改爲不會將自身與其他類似的庫混淆。

它看起來與已經提到的libconfig非常相似。在A study of the existing libraries to read from configuration files中有一個簡短的比較,可能是任何人選擇替代品的有用開始。

4

如果你真的需要小而簡單的INI解析器(用於路由器等嵌入式系統非常好),嘗試INIH。它只有2-3頁的代碼。

相關問題