假設我有一個簡單的配置文件,我的c程序需要讀取/解析。當我需要在linux下解析一個簡單的配置文件時,需要什麼樣的庫文件?
比方說,它看起來像這樣一點:
#Some comment
key1=data1
key2=data2
有沒有辦法,我可以改用寫我自己的解析器的標準C的lib?
感謝 約翰
注:今天,我有我自己的小解析器,但必須有一些標準庫,解決了這個簡單的問題。
假設我有一個簡單的配置文件,我的c程序需要讀取/解析。當我需要在linux下解析一個簡單的配置文件時,需要什麼樣的庫文件?
比方說,它看起來像這樣一點:
#Some comment
key1=data1
key2=data2
有沒有辦法,我可以改用寫我自己的解析器的標準C的lib?
感謝 約翰
注:今天,我有我自己的小解析器,但必須有一些標準庫,解決了這個簡單的問題。
http://code.jellycan.com/simpleini/
您可以使用簡單的INI文件相當多。
爲什麼不只是使用GLIB?
在無數其他的東西有庫函數解析INI像配置文件:
http://library.gnome.org/devel/glib/2.22/glib-Key-value-file-parser.html
除此之外,該機還支持數據類型(列表,哈希表,字符串,緩存),線程,與平臺無關的抽象,單元測試,錯誤處理和其他很多好東西。
對我來說這是最有用的C庫,我需要有一個非常好的理由來編寫一個C程序而不使用這個庫。
鏈接已損壞。 – gsingh2011 2013-07-21 21:43:17
此鏈接(現在...):關鍵值文件分析器(https://developer.gnome.org/glib/2.28/glib-Key-value-file-parser.html) – 2013-08-26 13:34:40
我覺得值得一提的libConfuse這裏,並引用其描述:
libConfuse是一個配置文件解析庫,根據ISC許可證的條款授權,並寫入C.它支持段和( (字符串,整數,浮點數,布爾值或其他部分)以及一些其他功能(如單/雙引號字符串,環境變量擴展,函數和嵌套包含語句)。它使得使用簡單的API將配置文件功能添加到程序變得非常容易。
libConfuse的目標不是配置文件解析器庫有很多功能。相反,它的目的是易於使用並快速與代碼集成。之前libConfuse被稱爲libcfg,但其名稱已更改爲不會將自身與其他類似的庫混淆。
它看起來與已經提到的libconfig非常相似。在A study of the existing libraries to read from configuration files中有一個簡短的比較,可能是任何人選擇替代品的有用開始。
非常整潔實施。清潔和簡單。謝謝! – RootRaven 2015-06-03 18:44:54
如果你真的需要小而簡單的INI解析器(用於路由器等嵌入式系統非常好),嘗試INIH。它只有2-3頁的代碼。
類似的問題:http://stackoverflow.com/questions/1417765/parse-config-file-in-c-c。沒有標準的C庫可以做到這一點。如果你的需求很簡單並且不太可能改變,編寫你自己的解析器可能不是一個壞主意。 – 2010-02-12 09:05:02
雖然這不是OP所要求的,但FWIW,有時候使用'system()'調用的簡單的shell'sed' /'awk'單線程可能非常方便。 – Zaxter 2017-08-30 13:18:56