AnteriorPosterior

6.7 Ficheros binarios

  Curso: Fundamentos de programación en C, por Nacho Cabanes

6.7 Ficheros binarios

Hasta ahora nos hemos centrado en los ficheros de texto, que son sencillos de crear y de leer. Pero también podemos manejar ficheros que contengan información de cualquier tipo.

En este caso, utilizamos “fread” para leer un bloque de datos y “fwrite” para guardar un bloque de datos. Estos datos que leamos se guardan en un buffer (una zona intermedia de memoria). En el momento en que se lean menos bytes de los que hemos pedido, quiere decir que hemos llegado al final del fichero.

En general, el manejo de “fread” es el siguiente:

cantidadLeida = fread(donde, tamañoDeCadaDato, cuantosDatos, fichero);

Por ejemplo, para leer 10 números enteros de un fichero (cada uno de los cuales ocuparía 4 bytes, si estamos en un sistema operativo de 32 bits), haríamos

int datos[10];
resultado = fread(&datos, 4, 10, fichero);
if (resultado < 10)
printf("Había menos de 10 datos!");

Al igual que ocurría con “scanf”, la variable en la que guardemos los datos se deberá indicar precedida del símbolo &, por motivos con detalle que veremos cuando hablemos sobre punteros. También al igual que pasaba con “scanf”, si se trata de una cadena de caracteres (bien porque vayamos a leer una cadena de texto, o bien porque queramos leer datos de cualquier tipo pero con la intención de manejarlos byte a byte), como char dato[500] no será necesario indicar ese símbolo &, como en este ejemplo:

char cabecera [40];
resultado = fread(cabecera, 1, 40, fichero);
if (resultado < 40)
printf("Formato de fichero incorrecto, no está toda la cabecera!");
else
printf("El byte en la posición 5 es un %d”, cabecera[4]);

 

Actualizado el: 25-07-2014 16:49

AnteriorPosterior