FILE * fopen( char * nombre, char * modo )


Retorna:

 El handle o identificador de archivo abierto, o bien (0) si se produjo un error.

Descripción:

Abre un archivo del disco para lectura o escritura, utilizando el sistema de acceso a través de un handle o identificador de archivo que esta función retorna del archivo abierto o creado.

Se requiere el nombre del archivo a abrir o crear, y el modo de apertura, que debe ser un literal (texto entre comillas) dentro de los siguientes:

"r"  // Abre el archivo para lectura de los datos contenidos en el mismo.
"w"  // Crea el archivo para escritura (si existe, se perderá su contenido anterior).
"a"  // Abre el archivo para escribir al final del mismo, o lo crea en caso de no existir aún.
"r+" // Abre un archivo existente para actualizarlo, permitiendo tanto lectura como escritura.
"w+" // Crea un fichero (o trunca el existente) para escritura, permitiendo también lectura del mismo.
"a+" // Abre un archivo para leer del mismo en cualquier posición y escribir al final del mismo.
De igual forma se puede abrir ficheros binarios incluyendo 'b' a las anteriores declaraciones: "rb", "wb", "ab", "rb+", "wb+", "ab+".

Una vez abierto un archivo, pueden utilizarse todas las funciones de archivos basadas en handles, pero una vez se hayan realizado las operaciones necesarias en el fichero se debe cerrar, utilizando para ello la función
fclose().

Las funciones principales son fread() para la lectura de datos dentro del archivo y fwrite() para escritura de datos; es importante haber abierto el archivo en un modo apropiado para las operaciones realizadas. Es decir, que por ejemplo no se podrá escribir en el fichero si se ha abierto exclusivamente para lectura.


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); // Se cierra el archivo para abrirlo en otro modo

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

    fclose(mihandle); // Se cierra el archivo definitivamente
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 fseek() permite situar el puntero de lectura/escritura en cualquier posición del archivo. De esta forma, se pueden leer o escribir datos de cualquier punto del archivo.

La función fflush() vacía los buffers de escritura/lectura.

Nota: Las funciones save() y load() permiten igualmente salvar datos en archivos del disco y recuperarlos. Estas funciones son mas simples y con menos funcionalidad, pero su uso es mucho más sencillo que las funciones basadas en handles aquí descritas.


Ver: fclose() - fread() - fwrite() - save()