2010-02-12 14 views
16

Digamos que tengo un archivo de configuración simple que mi programa c necesita leer/analizar.¿Qué lib lib para usar cuando necesito analizar un archivo de configuración simple en Linux?

Digamos que se ve un poco como esto:

#Some comment 
key1=data1 
key2=data2 

¿Hay una librería C estándar que puedo utilizar en lugar de escribir mi propio analizador?

Gracias Johan


Nota: Hoy tengo mi propio analizador, pero tiene que haber algunas librerías estándar que resuelve este sencillo problema.

+0

Pregunta similar: http://stackoverflow.com/questions/1417765/parse-config-file-in-c-c. No hay una biblioteca C estándar que haga esto. Escribir su propio analizador puede no ser una mala idea si sus requisitos son simples y es poco probable que cambien. –

+0

Aunque esto no es exactamente lo que el OP está pidiendo sino FWIW, a veces un shell simple 'sed' /' awk' one-liner invocado usando 'system()' puede ser muy útil. – Zaxter

Respuesta

7

libconfig pero lo hace bastante más de lo que estás pidiendo

+0

un poco exagerado, pero me gusta. – Johan

6

¿Por qué no utilizar GLIB?

Entre otras innumerables cosas que tiene funciones de biblioteca para analizar INI como archivos de configuración:

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

Aparte de eso, también es compatible Tipos de datos (listas, tablas hash, Cuerdas, cachés), roscado, plataforma abstracciones neutros , pruebas unitarias, manejo de errores y muchas otras cosas geniales.

Para mí es la biblioteca C más útil y necesitaría una muy buena razón para escribir un programa C sin usar esta biblioteca.

+0

El enlace está roto. – gsingh2011

+1

Este enlace funciona (por ahora ...): [Analizador de archivos clave-valor] (https://developer.gnome.org/glib/2.28/glib-Key-value-file-parser.html) –

6

me parece que valga la pena mencionar aquí libConfuse, y cita su descripción:

libConfuse es una biblioteca de configuración de archivo del analizador, con licencia bajo los términos de la licencia ISC, y escrito en C. Es compatible con las secciones y (listas de) valores (cadenas, enteros, flotantes, booleanos u otras secciones), así como algunas otras características (tales como cadenas de comillas simples/dobles, expansión de variables de entorno, funciones e instrucciones de inclusión anidadas). Hace que sea muy fácil agregar capacidad de archivo de configuración a un programa usando una API simple.

El objetivo de libConfuse no es ser la biblioteca del analizador del archivo de configuración con un sinfín de funciones. En cambio, pretende ser fácil de usar y rápida de integrar con su código. libConfuse se llamaba libcfg antes, pero su nombre se cambió para no confundirse con otras bibliotecas similares.

Parece bastante similar al ya mencionado libconfig. Hay una breve comparación en A study of the existing libraries to read from configuration files que podría ser un comienzo útil para cualquiera que elija entre las alternativas.

4

Si necesita un analizador INI realmente pequeño y simple (muy bueno para sistemas integrados como enrutadores), intente INIH. Son solo 2-3 páginas de código.

Cuestiones relacionadas