SoloCodigo

Programación General => C/C++ => Mensaje iniciado por: hisoka en Martes 21 de Septiembre de 2004, 22:06

Título: Manejo De Archivos Binarios En Linux
Publicado por: hisoka en Martes 21 de Septiembre de 2004, 22:06
buenas, ahorita esoty haciendo un programa que trabaje con archivos binarios(agregar, modifciar, consultar y eliminar), mi duda es si el archivo binario que estoy creando esta bien, ya que cuando lo abro con un editor en este puedo visualizar la informacion y nose si deberia de poder verla..

Estoy usando para accesar al archivo fopen, y le paso wb o ab a los modos, para que este sea binario, tambien cuando lo creo....

Y para ver la informacion e introducir informacion estoy usando fscanf y fprintf, espero que alguien me ayude...

Gracias de antemano
Título: Re: Manejo De Archivos Binarios En Linux
Publicado por: chuidiang en Miércoles 22 de Septiembre de 2004, 14:41
La información puede verse o no dependiendo de qué sea.
Las cadenas de texto si deben verse.
Los numeros no deberían verse.

fprintf() y fscanf() son para ficheros de texto. Si escribes con fprint(), saldrá como fichero de texto. Usa en su lugar funciones como fwrite() o write() y fread() o read() (dependiendo si abres el fichero con fopen() o open())

Se bueno.
Título: Re: Manejo De Archivos Binarios En Linux
Publicado por: hisoka en Miércoles 22 de Septiembre de 2004, 22:27
ok, gracias...

pero hoy tengo otro problema, ya logro agregar y visualizar los registros, pero cuando quiero modificar los datos, los nuevos datos se me van al final del archivo y no entiendo porque...

hasta el momento he tratado con "a+b","w+b" y "wb" para escribir en el archivo y uso rewind despues del fopen para que este al principio del archivo y despues hago un fseek para encontrar el dato que quiero modificar, pero este siempre se me guarda al final y no logra modificar el dato que quiero...

Como comentario extra los datos que estoy guardando en el archivo son estructuras...

espero que alguien me ayude a entender porque no me sale....
Título: Re: Manejo De Archivos Binarios En Linux
Publicado por: nicokiki en Viernes 24 de Septiembre de 2004, 02:26
Hola!!!!!!!!

Si vos queres por ejemplo borrar un registro, lo q haces es crear otro archivo copiando en este ultimo lo q queres del original. Despues borras el original y renombras el nuevo con el del original. Como sabras, vos no podes borrar asi como asi. Los datos no se pueden borrar. Si esto te parece q lo vas a hacer muchas veces quizas te convendria marcarlo como borrado y cada un cierto tiempo, o ante accion del usuario, "defragmentar".
Ahora para modificar, si vos levantas un registro del archivo a memoria (no importa si el registro en un strcut, una clase, un int o lo q sea), lo modificas en memoria y lo pones en el archivo en la misma posicion de donde lo obtuviste pisando lo q te quedo abajo. Tene cuidado ya q si manejas registros de longiyud variable vas a estar haciendo mocos por todos lados. Si son de longitud fisja, no deberias tener problemas.

Salu2!!!!