int fread(void * datos, int longitud, int longitud_unidad, FILE * handle)


Retorna:

Tamaño leído // Si se pudieron leer todos los datos.
0 // Se produjo un error, o no se leyeron todos los datos pedidos.

Descripción:

Esta función permite leer datos de un archivo abierto con la función fopen(), a partir de la posición indicada por el puntero de lectura/escritura.

El archivo se debe haber abierto en un modo de lectura, o que la permita.

El puntero se sitúa inicialmente al comienzo del archivo, al abrirse el mismo, y avanza secuencialmente según se vayan leyendo datos. No obstante puede situarse este puntero del archivo en cualquier posición, utilizando la función fseek() y la función ftell() permite obtener la posición actual del puntero de un archivo.

La función fread() requiere como primer parámetro el OFFSET de los datos en los que deben leerse los datos del archivo, es decir, la dirección de memoria a partir de la cual se deben colocar los datos que se vayan leyendo del archivo.

Como segundo parámetro se requiere la longitud o tamaño total de los datos que se quieren leer, es decir, el número de posiciones de memoria que ocupan dichos datos. La longitud de un dato se puede obtener con la
función sizeof().

El último parámetro debe ser el handle o identificador de archivo que se obtuvo al abrir el archivo como valor de retorno de fopen().


int tabla1[4] = {11,22,33,44};
int tabla2[4];
FILE * mihandle;

MAIN_PROGRAM_CDIV

BEGIN_PROGRAM

    mihandle = fopen("../help.dat","w");

    fwrite(tabla1, 4, 4, mihandle);
    fclose(mihandle);

    mihandle = fopen("../help.dat","r");

    fread(tabla2, 4, 4, mihandle); // Lee el archivo sobre tabla2
    fclose(mihandle);

END_PROGRAM

Este programa ejemplo tiene definidas dos tablas globales; tabla1 con cuatro valores inicializados a 11, 22, 33 y 44, y tabla2 con cuatro sin inicializar (a cero).

Se utilizan las funciones de archivos para escribir en un archivo el contenido de la tabla1 y después cargarlo sobre la tabla2. Al finalizar el programa, se habrán copiado los datos de la primera tabla en la segunda.

Se llama a la función fopen() en dos ocasiones, la primera para crearlo y escribir en él, y la segunda para abrirlo y leer su contenido.

Es importante resaltar que cada vez que se abra o cree un archivo, se tiene que cerrar después con la función fclose() (se puede ver como, en el ejemplo, se cierra el archivo en dos ocasiones).

La función inversa a fopen(), es decir, la que permite escribir datos en un archivo en lugar de leerlos, es fwrite(). La forma de utilizar esta función y sus parámetros son idénticos a los de fread().


Ver: fopen() - fwrite() - fseek()