Mi programa está leyendo un archivo de texto que contiene varias líneas de texto para un archivo de configuración. Algunas de las líneas podrían ser muy grandes. Actualmente el tamaño del buffer es 4096 caracteres. Es posible que algunas líneas puedan exceder esto, ya sea a través de la malicia o debido a varios factores que operan dentro del programa.¿Existe una amplia biblioteca de C para leer pares de nombre/valor de un archivo?
Las rutinas actuales eran bastante tediosas de escribir y ahora quiero ampliar los posibles contenidos del archivo que requerirán más de este tedioso código repetitivo. (Esto es para un archivo de tipo de configuración, que consta de name value
pares y el encabezado de sección ocasional. Algunos valores numéricos deben leerse como cadenas debido a la precisión múltiple).
Lo principal que quiero es leer una línea de longitud arbitraria sin desbordamiento de búfer. Acabo de descubrir que Getline puede hacer esto por mí, pero, ¿existe una gran biblioteca que me haga todo este aburrimiento?
edición:
No deseo ser obligado a colocar un signo =
entre el nombre y los valores, un espacio en blanco debe ser suficiente como separador.
Por extendida, me refiero a que la biblioteca debería estar disponible en los paquetes estándar de las populares distribuciones de Linux.
Estoy al tanto de libconfig pero parece exagerado para mis requerimientos.
en este caso, también sugiero escribirlo, parece bastante trivial. El único problema es cómo almacenará su tabla, si esto es puro C, entonces no std :: map para usted, ¿pero supongo que usted ya tiene sus propias estructuras de datos? –
Gracias por el consejo de sscanf% [..], pero después de la prueba, te falta un símbolo: '"% [^:]:% [^ \ n] "', salud, voy a seguir este camino . –
Corregido. Perdón por el caret perdido. – piotr