Título: Ayuda con biblioteca que lee un fichero de configuracion Publicado por: snake_linux en 21 Agosto 2015, 20:12 pm Hola a tod@s, pues ahora estoy haciendo una pequeña libreria que facilita la extracción de información de archivos de configuración, estos ficheros de configuración serían del tipo:
Código: campo1=valor1 La función que se usaría tendría la sintaxys: Código
Es decir, le pasamos, como primer elemento, el archivo de configuración, como segundo elemento el campo del que va a extraer la información, y como tercer parametro, un array (creado en el programa que usa la librería) donde guardará el valor extraido (con strcpy). El código es el siguiente: Código
Los problemas que me dan son: 1) No extrae la información, ni siquiera me muestra el campo, la salida que me da es la siguiente: el campo es el valor es el campo es el valor es el campo es el valor es 2) El while hace un ciclo más del que debe, es decir, si el fichero de configuración tiene 3 lineas, el while da 4 vueltas... lo he comprobado con los printfs que he puesto en mitad del while. Gracias de antemano. Saludos. Título: Re: Ayuda con biblioteca que lee un fichero de configuracion Publicado por: engel lex en 21 Agosto 2015, 20:23 pm recomiendo lo siguiente...
1- siempre que se cargue la librería y se le pase un archivo, lee todo el archivo 2- todos los valores obtenidos guardalos en un array bidimensional, siendo el primer valor el nombre y el segundo el contenido 3- recomiendo siempre borrar los espacios en los bordes (trim) ya que la gente podría hacer Código: #comentario con espacio por delante por otro lado tu error está probablemenet en la linea 46 donde value empieza a popularse desde el medio y sin discriminación Título: Re: Ayuda con biblioteca que lee un fichero de configuracion Publicado por: snake_linux en 21 Agosto 2015, 20:56 pm recomiendo lo siguiente... 1- siempre que se cargue la librería y se le pase un archivo, lee todo el archivo 2- todos los valores obtenidos guardalos en un array bidimensional, siendo el primer valor el nombre y el segundo el contenido 3- recomiendo siempre borrar los espacios en los bordes (trim) ya que la gente podría hacer Código: #comentario con espacio por delante por otro lado tu error está probablemenet en la linea 46 donde value empieza a popularse desde el medio y sin discriminación No entiendo lo del error en la linea 46, ¿me lo podrías explicar un poco más detallado? Título: Re: Ayuda con biblioteca que lee un fichero de configuracion Publicado por: engel lex en 21 Agosto 2015, 21:04 pm copio desde la linea 39, hablaré de los numeros de linea aquí
Código
supongamos que en el fichero tienes Código: hola=mundo así que subject quedaría en memoria Código: |h|o|l|a|0|0|0|0|0|.... cuando llegas a la linea 6 tienes un for que no inicia, sino que continúa value está limpio y sería a nivel de memoria algo como Código: |0|0|0|0|0|0|0|0|0|.... cuando lo llenas, empiezas a llenarlo desde la posición que quedó el ciclo anterior (en nuestro caso 5), así que Código: |0|0|0|0|0|m|u|n|d|o|0|0.... cuando lo vas a imprimir, printf no lee cadena en en value, ya que empieza con fin de cadena (ese 0 que muestro en el string) y no imprime nada value tienes que escribirlo desde 0, así que puedes usar x como base para buffer, pero no para value Título: Re: Ayuda con biblioteca que lee un fichero de configuracion Publicado por: snake_linux en 21 Agosto 2015, 22:06 pm copio desde la linea 39, hablaré de los numeros de linea aquí Código
supongamos que en el fichero tienes Código: hola=mundo así que subject quedaría en memoria Código: |h|o|l|a|0|0|0|0|0|.... cuando llegas a la linea 6 tienes un for que no inicia, sino que continúa value está limpio y sería a nivel de memoria algo como Código: |0|0|0|0|0|0|0|0|0|.... cuando lo llenas, empiezas a llenarlo desde la posición que quedó el ciclo anterior (en nuestro caso 5), así que Código: |0|0|0|0|0|m|u|n|d|o|0|0.... cuando lo vas a imprimir, printf no lee cadena en en value, ya que empieza con fin de cadena (ese 0 que muestro en el string) y no imprime nada value tienes que escribirlo desde 0, así que puedes usar x como base para buffer, pero no para value Gracias por la aclaración, me ha servido de mucho, he modificado un poco el código y ya obtiene tanto el campo como el valor, pero ahora tengo otro pequeño problema... ahora resulta, que solo lee una linea, es decir un campo y un valor e ignora el resto, te dejo el código que he editado: Código
¿Por que puede ser? Gracias de antemano. Título: Re: Ayuda con biblioteca que lee un fichero de configuracion Publicado por: engel lex en 21 Agosto 2015, 22:36 pm Linea 52, tienes un return
Título: Re: Ayuda con biblioteca que lee un fichero de configuracion Publicado por: snake_linux en 21 Agosto 2015, 23:14 pm Linea 52, tienes un return Perdona, no se en que estaba pensando... Muchísimas gracias por tu ayuda, marco como solucionado. |