Título: recorrer archivo binario Publicado por: m@o_614 en 18 Octubre 2013, 23:22 pm Saludos
Si tengo un arreglo de estructuras(o de registros), los cuales guardo en un archivo binario, para yo poder recorrer registro por registro(tomando en cuenta que tienen diferente longitud) en un archivo binario tengo que hacerlo secuencialmente o sea caracter por caracter, o puedo ir saltando de registro en registro hasta encontrar el que busco?? tengo que poner delimitadores entre cada registro para saber donde empieza uno y donde termina otro?? gracias Título: Re: recorrer archivo binario Publicado por: eferion en 19 Octubre 2013, 19:40 pm Tienes varias opciones:
* Crea un segundo archivo que contenga un índice. Este índice te debería indicar la posición en la que comienza cada registro y, adicionalmente, puede contener algún otro valor del registro que te permita acelerar las búsquedas ( por ejemplo el nombre si los registros almacenan datos de tus contactos. Esto te permite buscar en el índice por los nombres y localizar rápidamente la posición del registro que estás buscando ). * Puedes poner antes de cada registro un campo que indique la longitud total de dicho registro... así si lo quieres saltar basta con que incrementes el puntero de lectura en X para acceder al siguiente campo de longitud. * Puedes integrar el archivo del índice que te he comentado antes al final ( o al principio ) del archivo... entonces para hacer búsquedas puedes ir rápidamente a dicho índice para hacer la búsqueda. * Puedes plantearte añadir un "padding" a cada registro para que todos acaben ocupando lo mismo... de esta forma los saltos serán siempre iguales. Y seguro que a alguno más se le ocurren ideas nuevas. Título: Re: recorrer archivo binario Publicado por: m@o_614 en 21 Octubre 2013, 21:39 pm muchas gracias eferion por tu respuesta, el programa lo que hace es que me pide que le ingrese 10 registros que contengan(nombre,edad y ciudad residencia) y despues me pide un numero del 1 al 10 y me tiene que imprimir ese registro, el problema es que si le pido por ejemplo el registro numero 2 y este registro es:
marco22guadalajara, (nombre,edad, ciudad) el programa me imprime marco22guadalajar, o sea que se come la ultima letra y ya lo revise pero no entiendo por que hace esto El programa basicamente me hace un arreglo del tamanio de cada registro para ver donde esta cada uno Código
Título: Re: recorrer archivo binario Publicado por: rir3760 en 25 Octubre 2013, 17:59 pm El problema se encuentra en la funcion "buscarRegistro", en la linea:
Código Y se debe a que le estas indicando el numero exacto de caracteres del registro pero la función utilizara el ultimo para almacenar el '\0'. Para solucionarlo basta con tener eso en cuenta cambiando la llamada a fgets a: Código Un saludo |