Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Manejo de archivo binario

Estas en el tema de Manejo de archivo binario en el foro de C/C++ en Foros del Web. Hola, bueno al fin esta resuelto el script aquel que volteaba el contenido de un archivo depositando en otro. Recuerdo que esa vez les preguntaba ...
  #1 (permalink)  
Antiguo 08/04/2007, 10:34
 
Fecha de Ingreso: julio-2005
Ubicación: Guatemala
Mensajes: 165
Antigüedad: 18 años, 9 meses
Puntos: 0
Manejo de archivo binario

Hola, bueno al fin esta resuelto el script aquel que volteaba el contenido de un archivo depositando en otro.

Recuerdo que esa vez les preguntaba sobre ayudita con el manejo de un archivo binario, y por donde empezar.

Bueno, el problema es que el contenido de un archivo binario es por ejemplo:
Cita:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 ...
Y el contenido de ese archivo debo colocarlo en un arreglo para su posterior visualización en pantalla.

Ayudita, por donde empiezo y que cosas debo tener en cuenta, según tengo entendido este debe ser más fácil.

Gracias, saludos.
__________________
Guatemala - Guatemala
  #2 (permalink)  
Antiguo 08/04/2007, 11:23
Kal
 
Fecha de Ingreso: marzo-2007
Mensajes: 17
Antigüedad: 17 años, 1 mes
Puntos: 0
Re: Manejo de archivo binario

Ahorita lo primero que se me viene a la mente es la función-C "strtok".

Además la clase string trae un método llamado substr que fácilmente podrás colocarlo en un vector, al ir detectando los espacios en blanco.
  #3 (permalink)  
Antiguo 08/04/2007, 22:02
 
Fecha de Ingreso: noviembre-2003
Ubicación: Mexico
Mensajes: 1.081
Antigüedad: 20 años, 5 meses
Puntos: 7
Re: Manejo de archivo binario

debes de saber que formato va a tener el archivo.
como va a ser?
es decir, siempre van a ser puros numeros?
seran numeros enteros o flotantes?
cuantas lineas?
cuantos numeros por linea? o son indefinidas?
siempre que haya una nueva linea tendra numeros? o puede haber lineas en blanco?

respondiendo esas preguntas sera mas facil......
  #4 (permalink)  
Antiguo 09/04/2007, 08:54
Avatar de Instru  
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 21 años, 5 meses
Puntos: 52
Re: Manejo de archivo binario

Cita:
Iniciado por bilkarm3 Ver Mensaje
Hola, bueno al fin esta resuelto el script aquel que volteaba el contenido de un archivo depositando en otro.

Recuerdo que esa vez les preguntaba sobre ayudita con el manejo de un archivo binario, y por donde empezar.

Bueno, el problema es que el contenido de un archivo binario es por ejemplo:

Y el contenido de ese archivo debo colocarlo en un arreglo para su posterior visualización en pantalla.

Ayudita, por donde empiezo y que cosas debo tener en cuenta, según tengo entendido este debe ser más fácil.

Gracias, saludos.
Abres el archivo, usas fseek(archivo, 0, SEEK_END); Luego usas ftell para obeter el tamaño del archivo. Nuevamente usas fseek(archivo, 0, SEEK_SET) para regresar el apuntador del archivo al principio. Despues ya sabes cuanto tienes que leer. Creas un array con malloc o new con el tamaño devuelto por ftell luego lees con fread todo el archivo. Ya tienes todo en un array, ahora el truco es parsearlo para que solo contenga numeros.

Saludos
  #5 (permalink)  
Antiguo 09/04/2007, 09:34
 
Fecha de Ingreso: julio-2005
Ubicación: Guatemala
Mensajes: 165
Antigüedad: 18 años, 9 meses
Puntos: 0
Re: Manejo de archivo binario

¿Quedo bien? ¿califiación?
Código PHP:
void binario()
{
   
int ij;
   
int *array;
   
FILE *fichero;
   
clrscr();
   
fichero fopen("binario.txt""r");
   
fseek(fichero0SEEK_END);
   
ftell(fichero);
   
fseek(fichero0SEEK_SET);
   array = new 
int [i];
       
fread(array, sizeof(unsigned int), ifichero);
   for (
j=0;j<=i;j++)
   {
      
cout<<"Posicion del Arreglo: "<<j<<" Valor guardado: "<<array[j]<<endl;
   }
   
getchar();
   
delete [] array;
   
fclose(fichero);

__________________
Guatemala - Guatemala
  #6 (permalink)  
Antiguo 09/04/2007, 10:52
Kal
 
Fecha de Ingreso: marzo-2007
Mensajes: 17
Antigüedad: 17 años, 1 mes
Puntos: 0
Re: Manejo de archivo binario

Si vas a usar delete, que es del C++ aprovecha sus STL, como vectores, iteradoes, etc...

Creo que aún le podemos mejor ;)
  #7 (permalink)  
Antiguo 09/04/2007, 18:19
Avatar de Instru  
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 21 años, 5 meses
Puntos: 52
Re: Manejo de archivo binario

Cita:
Iniciado por bilkarm3 Ver Mensaje
¿Quedo bien? ¿califiación?
Código PHP:
void binario()
{
   
int ij;
   
int *array;
   
FILE *fichero;
   
clrscr();
   
fichero fopen("binario.txt""r");
   
fseek(fichero0SEEK_END);
   
ftell(fichero);
   
fseek(fichero0SEEK_SET);
   array = new 
int [i];
       
fread(array, sizeof(unsigned int), ifichero);
   for (
j=0;j<=i;j++)
   {
      
cout<<"Posicion del Arreglo: "<<j<<" Valor guardado: "<<array[j]<<endl;
   }
   
getchar();
   
delete [] array;
   
fclose(fichero);

Bien, vas mejorando.
Solo que hay un pequeño problema:
fread(array, sizeof(unsigned int), i, fichero);

Esto te va a leer 4 veces lo que necesitas. Porque un unsigned int es de 32 bits, es decir, 4 bytes. Y como ftell te dice el numero de bytes.....
Te recomendaria algo asi:

fread(array, 1, i, fichero);

Aunque eso te va a alterar un poco tu array asi que una mejor forma:

for(...)
fgetc(array[i])

Algo asi (en pseudocodigo)

Aunque todavia te falta el parseo(descartar espacios, saltos de lineas, etc, etc)

Saludos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:06.