Título: Funcion importar de txt Publicado por: kuni2006 en 5 Agosto 2016, 20:46 pm Estoy trabanjo en una funcion que me permita pasar registro de un txt al archivo binario que utiliza mi programa, esto es lo que se me ocurrio hasta ahora pero no parece funcionar, si alguien me pudiera dar una mano, lo apreciaria mucho.
Código
Título: Re: Funcion importar de txt Publicado por: AlbertoBSD en 6 Agosto 2016, 02:10 am Lo que estas haciendo es pasarlo de un Txt a otro txt.
La funcion deberia de ser fwrite: Código O que es lo que no te funciona exactamente ? Lo Guarda mal? No escribe nada? Escribe todos los registros menis el ultimo? Escribe Basura? Otra cosa deberia de ser: Código
Título: Re: Funcion importar de txt Publicado por: Yoel Alejandro en 6 Agosto 2016, 02:46 am Hola kuni2006,
Bueno, hay algunos detalles para que pueda funcionar correctamente. Al parecer tratas de leer el fichero de texto y almacenar dichos datos en un fichero binario (tal vez para gestionar una sencilla Base o Estructura de Datos). En cuanto a fscanf(), no se si has leído el tema pero esta función recibe como argumento APUNTADORES a las variables donde debe escribirse la infromación: Código
y nota que hempos usando el "&" para definir un apuntador al registro persona. Otro detalle, si vas a trabajar con ficheros binarios no se puede escribir con fprintf() (lo cual sería para escritura con formato sobre ficheros de texto) sino con fwrite(), tal como te dijo Alberto. En este caso se requiere como auxiliar las funciones ftell(), fseek() por lo que deberías leer un poco el tema para terminar de comprender (o pregunta por aquí). Esto en caso que usemos "C crudo", pues en C++ hay algunas clases definidas para ello que quizá hagan la tarea menos ruda (aunque yo me llevo muy bien con C crudo). Otro detalle sería que inmediatamente luego de abrir los ficheros, es bueno cerciorarse que la operación se realizó exitosamente (open() devuelve un puntero no nulo), y en caso contrario salir del programa: Código
En nuestro caso, diseñé el programa para que, con propósitos demostrativos, luego escribir en el fichero binario también lo podamos leer a fin de inspeccionar el resultado. Por eso le cambié el modo de apertura como lo tenías "wb" a "r+b". Aquí el código fuente: Código
y suponiendo que en "nombres.txt" tengamos el siguiente contenido 12345 01/02/1980 Perez Jose Maria 85749 05/07/1978 Ramirez Ana Patricia 85711 21/07/1991 Fernandez Juan Manuel el resultado sería: Escribiendo en fichero binario: Dato 1: DNI: 12345 DNI: 01/02/1980 DNI: Perez DNI: Jose Maria ======================================== Dato 2: DNI: 85749 DNI: 05/07/1978 DNI: Ramirez DNI: Ana Patricia ======================================== Dato 3: DNI: 85711 DNI: 21/07/1991 DNI: Fernandez DNI: Juan Manuel ======================================== Leyendo del fichero binario: Dato 1: DNI: 12345 DNI: 01/02/1980 DNI: Perez DNI: Jose Maria ======================================== Dato 2: DNI: 85749 DNI: 05/07/1978 DNI: Ramirez DNI: Ana Patricia ======================================== Dato 3: DNI: 85711 DNI: 21/07/1991 DNI: Fernandez DNI: Juan Manuel ======================================== Un saludo, y cualquier cosa pregunta por aquí. Título: Re: Funcion importar de txt Publicado por: kuni2006 en 6 Agosto 2016, 22:11 pm Muchas gracias, tu codigo me ayudo a enteder mis errores y pude arreglar mi programa.
Título: Re: Funcion importar de txt Publicado por: kuni2006 en 6 Agosto 2016, 23:43 pm Otro problema que tengo es que cuando quiero que escriba lo del binario a un archivo me imprime en leguage de maquina, por que podra ser?
Título: Re: Funcion importar de txt Publicado por: AlbertoBSD en 6 Agosto 2016, 23:47 pm Como estas hacianedo eso??
Si pones tu codigo podremos ayudarte mejor. :¬¬ Saludos! Título: Re: Funcion importar de txt Publicado por: Yoel Alejandro en 7 Agosto 2016, 01:58 am Kuni, es obvio, los datos en binario se guardan como su nombre lo dice: en código binario.
La forma de leerlos es por medio de un apuntador a la variable donde serán copiados los datos, en nuestro ejemplo un apuntador a la variable persona, que es un tipo struct definido por el usuario. Luego, puedes enviar el valor de cada campo de dicho struct formateado a un fichero de texto, usando fprintf(). De hecho, si miras bien es justamente lo que hace la segunda parte del programa que de ti de muestra, sólo que usando printf() en lugar de fprintf() pues estamos escribiendo en la terminal en vez de un fichero. Para escribir en un fichero de texto usa fprintf(). Título: Re: Funcion importar de txt Publicado por: kuni2006 en 8 Agosto 2016, 20:56 pm No fue nada, me confundí en una boludez que no veía y me estaba poniendo nervioso, gracias igual.
|