9.5)Archivo Binarios.

Una forma eficiente de almacenar números en el disco consiste en utilizar archivos binarios. En este tipo de archivos no se almacenan los números como cadenas de caracteres sino que se almacenan de la misma forma que se hace en memoria. El contenido de los archivos binariosno puede ser visualizado mediante un editor de textos.

9.5.1)Apertura y Cierre de Archivo Binarios.

Las operaciones de apertura y cierre para archivos binarios son exactamente las mismas que las vistas para archivos de texto fopen y fclose. También los modos de apertura son los mismos. La única diferencia radica en que hay que añadir una b de  "binary" al modo de apertura, es decir, rb, wb, ab, rb+, wb+ y ab+, manteniendo el mismo significado que para archivos de texto. Una vez creado un archivo con un tipo determinado (binario o de texto) ya no se le puede cambiar el modo de acceso, las operaciones de lectura y escritura han de ser las específicas para cada tipo de archivo.

9.5.2)Lectura y Escritura de Archivo Binarios.

Las funciones de lectura y escritura ya no son las mismas que para los archivos de texto. Mientras que fscanf y fprintf realizan una conversión del tipo de dato a cadena de caracteres, en los archivo binarios esto es innecesario. Por este motivo hay que utilizar otras funciones. La función utilizada para leer datos de un archivo binario es fread y la función utilizada para escribir datos en un archivo binario es fwrite. Estas funciones son independientes del tipo de dato que se lea o escriba, es decir, no realizan ninguna interpretación del tipo de dato.

La especificación de las funciones fread y fwrite es la siguiente:

size_t  fread(void *p, size_t size, size_t n, FILE *pf)

size_t  fwrite(void *p, size_t size, size_t n, FILE *pf)

Para fread: Para fwrite: El tipo de dato size_t está definido en el fichero <stdio.h>. Su definición es la siguiente:
typedef unsigned size_t
El tipo size_t no es más que un entero sin signo; la razón de utilizar este tipo de dato y no la de unsigned directamente no es otra que la de distinguir el tipo de dato cuando se utiliza en la lectura o escritura dc archivos binarios.

Ambas funciones devuelven el número de ítems leídos o escritos, 0 en caso de que no se haya leído o escrito ninguno.

Es posible almacenar varios datos en disco a la vez y no necesariamente uno a uno.