Welche c-lib soll ich verwenden, wenn ich eine einfache Konfigurationsdatei unter Linux analysieren muss? [closed]
Lesezeit: 3 Minuten
Nehmen wir an, ich habe eine einfache Konfigurationsdatei, die mein C-Programm lesen/parsen muss.
Nehmen wir an, es sieht ein bisschen so aus:
#Some comment
key1=data1
key2=data2
Gibt es eine Standard-C-Lib, die ich verwenden kann, anstatt meinen eigenen Parser zu schreiben?
Danke Johann
Notiz: Heute habe ich meinen eigenen kleinen Parser, aber es muss einige Standardbibliotheken geben, die dieses einfache Problem lösen.
Ähnliche Frage: stackoverflow.com/questions/1417765/parse-config-file-in-cc . Es gibt keine Standard-C-Bibliothek, die dies tut. Das Schreiben eines eigenen Parsers ist möglicherweise keine schlechte Idee, wenn Ihre Anforderungen einfach sind und sich wahrscheinlich nicht ändern werden.
– Firas Assaad
12. Februar 2010 um 9:05 Uhr
Dies ist zwar nicht genau das, wonach das OP fragt, aber FWIW, manchmal eine einfache Shell sed/awk Einzeiler aufgerufen mit system() kann sehr praktisch sein.
– Zaxter
30. August 2017 um 13:18 Uhr
f4.
libconfig aber es tut viel mehr als das, was Sie fragen
sampi
Ich finde es erwähnenswert libVerwirren hier, und zitiere seine Beschreibung:
libConfuse ist eine Konfigurationsdatei-Parser-Bibliothek, lizenziert unter den Bedingungen der ISC-Lizenz und in C geschrieben. Sie unterstützt Abschnitte und (Listen von) Werten (Strings, Integers, Floats, Booleans oder andere Abschnitte) sowie einige andere Funktionen (wie Zeichenfolgen in einfachen/doppelten Anführungszeichen, Erweiterung von Umgebungsvariablen, Funktionen und verschachtelte Include-Anweisungen). Es macht es sehr einfach, einem Programm mithilfe einer einfachen API Konfigurationsdateifunktionen hinzuzufügen.
Das Ziel von libConfuse ist nicht, die Parser-Bibliothek für Konfigurationsdateien mit einer Unmenge von Funktionen zu sein. Stattdessen soll es einfach zu bedienen und schnell in Ihren Code zu integrieren sein. libConfuse hieß früher libcfg, aber sein Name wurde geändert, um sich nicht mit anderen ähnlichen Bibliotheken zu verwechseln.
Abgesehen davon unterstützt es auch Datentypen (Listen, Hashtables, Strings, Caches), Threading, plattformneutrale Abstraktionen, Unit-Tests, Fehlerbehandlung und viele andere tolle Sachen.
Für mich ist es die nützlichste C-Bibliothek und ich müsste einen sehr guten Grund haben, ein C-Programm zu schreiben, ohne diese Bibliothek zu verwenden.
Marki555
Wenn Sie einen wirklich kleinen und einfachen INI-Parser benötigen (sehr gut für eingebettete Systeme wie Router), versuchen Sie es INIH. Es sind nur 2-3 Seiten Code.
Ich habe eine einfache C-Bibliothek implementiert, die die Konfigurationsdatei analysiert:
Ähnliche Frage: stackoverflow.com/questions/1417765/parse-config-file-in-cc . Es gibt keine Standard-C-Bibliothek, die dies tut. Das Schreiben eines eigenen Parsers ist möglicherweise keine schlechte Idee, wenn Ihre Anforderungen einfach sind und sich wahrscheinlich nicht ändern werden.
– Firas Assaad
12. Februar 2010 um 9:05 Uhr
Dies ist zwar nicht genau das, wonach das OP fragt, aber FWIW, manchmal eine einfache Shell
sed
/awk
Einzeiler aufgerufen mitsystem()
kann sehr praktisch sein.– Zaxter
30. August 2017 um 13:18 Uhr