fclose()

fclose(<handle>)

Retorna:

Número de archivos que se han cerrado.

Descripción:

Cierra un archivo abierto con la función fopen(), para ello debe recibir como parámetro el handle o identificador de archivo devuelto por dicha función.

En una segunda modalidad, la función fclose() puede cerrar todos los archivos abiertos de una vez, para ello se debe indicar simplemente 0 (cero) como parámetro, en lugar de un handle.

En cualquier caso, la función retornará el número de archivos que se han cerrado, si se devuelve 0 puede deberse a uno de estos casos:

- No había ningún archivo abierto.
- El handle pasado no se corresponde con ningún archivo abierto. - El archivo correspondiente a dicho handle ya habia sido cerrado.

Todos los archivos abiertos deben cerrarse antes de que el programa finalice su ejecución.

Programa ejemplo:
PROGRAM ejemplo_fclose;

GLOBAL
    tabla1[3]=11,22,33,44;
    tabla2[3];
    mihandle;

BEGIN
    mihandle=fopen("help\help.dat","w");
    fwrite(OFFSET tabla1,4,mihandle);

    fclose(mihandle); // Se cierra el archivo para abrirlo en otro modo

    mihandle=fopen("help\help.dat","r");
    fread(OFFSET tabla2,4,mihandle);

    fclose(mihandle); // Se cierra el archivo definitivamente
END


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.

Si un archivo abierto en un modo (con la función fopen()) quiere accederse en otro modo diferente, se debe primero cerrar para entonces volver a abrirlo en el nuevo modo; como sucede en el ejemplo, se cierra el archivo de escritura para abrirlo entonces en modo lectura.


La función flush() vacía los buffers de escritura y permite además averiguar cuantos archivos hay abiertos en cada momento.


Ver: fopen() fread() - fwrite()