Esta sección presenta los aspectos generales de la implementación de programas de archivos en Lenguaje C++. Aunque se puede almacenar cualquier tipo de datos en archivos, aquí se muestran las operaciones del manejo de registros (struct) en archivos, por lo que las funciones que se mencionan a continuación son las mas importantes para este tipo de datos.
Declaración del alias del archivo
Para
realizar programas de manejo de archivos en Lenguaje C++ se requiere el
encabezado “Standard I/O” y se necesita incluirlo de la sig. forma:
#include <stdio.h>
además
es necesario declarar una variable de tipo FILE que opere como el apuntador a la estructura del archivo (alias), esto se logra con la sig. línea:
FILE *alias;
Apertura de archivos
FOPEN()
Antes de abrir un fichero necesitamos
declarar un puntero de tipo FILE, con el que trabajaremos durante todo el
proceso. Para abrir el fichero utilizaremos la función fopen( ).
Su sintaxis es:
FILE *puntero;
puntero = fopen ( nombre del fichero, "modo de
apertura" );
Donde puntero es la variable de tipo FILE,
nombre del fichero es el nombre que daremos al fichero que queremos crear o
abrir. Este nombre debe ir encerrado entre comillas. También podemos
especificar la ruta donde se encuentra o utilizar un array que contenga el
nombre del archivo ( en este caso no se pondrán las comillas ). Algunos
ejemplos:
puntero=fopen("DATOS.DAT","r");
puntero=fopen("C:\\TXT\\SALUDO.TXT","w");
Un archivo puede ser abierto en dos modos diferentes, en modo texto o en modo binario. A continuación lo veremos con más detalle.
La función fopen devuelve, como ya hemos visto, un puntero de tipo FILE. Si al intentar abrir el fichero se produjese un error ( por ejemplo si no existe y lo estamos abriendo en modo lectura ), la función fopen devolvería NULL. Por esta razón es mejor controlar las posibles causas de error a la hora de programar. Un ejemplo
FILE *pf;
pf=fopen("datos.txt","r");
if (pf == NULL) printf("Error al abrir el
fichero");
freopen()
Esta función cierra el fichero apuntado
por el puntero y reasigna este puntero a un fichero que será abierto. Su
sintaxis es:
freopen(nombre del
fichero,"modo de apertura",puntero);
Donde nombre del fichero es el nombre del nuevo fichero que queremos abrir, luego el modo de apertura, y finalmente el puntero que va a ser reasignado.
La función fopen() y modos de apertura de archivos
Se
usa la función fopen para abrir un archivo, determinar
el modo de apertura y establecer la vía de comunicación mediante su alias
correspondiente. Además determinar el tipo de contenido del archivo (texto o
binario). Esta función tiene dos argumentos: el nombre del archivo y su modo
(Fig. 16). La Fig. 15 muestra los modos de apertura de archivos de texto y
binarios.
|
Modo
de apertura (archivos
de texto) |
Modo
de apertura (archivos
binarios) |
Operación |
|
“r” |
“rb” |
Apertura
en modo de sólo lectura. El
archivo debe existir. |
|
“w” |
“wb” |
Apertura
en modo de sólo escritura. Si el archivo existe, se reescribirá (pierde el
contenido anterior). Si
el archivo no existe, lo crea. |
|
“a” |
“ab” |
Apertura
en modo de agregar. Si el archivo existe, los datos se agregan al final del
archivo, en caso contrario, el archivo se crea. |
|
“r+” |
“rb+” |
Apertura
en modo de lectura/escritura. El archivo debe existir. |
|
“w+” |
“wb+” |
Apertura
en modo de lectura/escritura. Si el archivo existe, se reescribirá (pierde el
contenido anterior). |
|
“a+” |
“ab+” |
Apertura
en modo de lectura/agregar. Si el archivo no existe lo crea. |
Fig. 15. Modos de apertura para archivos de texto y
binarios.
Validar la apertura de un archivo
Algunas funciones requieren la existencia del archivo para realizar operaciones, por ello es necesario verificar que cuando se intenta abrir un archivo haya tenido éxito la operación. Si un archivo no se puede abrir, la función fopen devuelve el valor de 0 (cero), definido como NULL en stdio.h. La Fig. 17 muestra un ejemplo de la manera de detectar la apertura de un archivo.
|
#include <stdio.h> FILE *alias; alias = fopen(“EJEMPLO.DAT”, “rb”); if (alias==NULL) { cout << “\n\r No se puede
abrir el archivo !!!”;
getch(); return(); } |
Fig. 17. Validar la apertura de un archivo.
Cierre de archivos
Una vez que hemos acabado nuestro trabajo
con un fichero es recomendable cerrarlo. Los ficheros se cierran al finalizar
el programa pero el número de estos que pueden estar abiertos es limitado. Para
cerrar los ficheros utilizaremos la función fclose( );
Esta función cierra el fichero, cuyo
puntero le indicamos como parámetro. Si el fichero se cierra con éxito devuelve
0
fclose(puntero);
Un ejemplo ilustrativo aunque de poca
utilidad:
FILE *pf;
pf=fopen("AGENDA.DAT","rb");
if ( pf == NULL ) printf ("Error al abrir el
fichero");
else fclose(pf);
Cierre de archivos usando fclose() y fcloseall()
Antes
de dejar de utilizar un archivo es necesario cerrarlo. Esto se logra mediante
las funciones fclose o fcloseall. Si se usa fclose es necesario indicarle el alias del
archivo que se desea cerrar. La función fcloseall cierra todos los archivos abiertos.
No hay comentarios.:
Publicar un comentario