Los
registros individuales de un archivo de acceso directo
normalmente son de longitus fija y se puede tener acceso a ellos
directamente (y por lo tanto rápidamente) sin tener que buscar
a través de otros registros. Esto hace que los archivos de
acceso directo sean apropiados para sistemas que requieren
de acceso rápido a datos específicos. Centraremos
nuestro análisis a un enfoque sencillo de utilización
de registros de longitud fija.
Los
datos pueden ser insertos en un archivo de acceso directo sin destruir
otros datos en el archivo. Loas datos almacenados anteriormente
tambié pueden ser actualizados o borrados, sin tener que
reescribir todo el archivo
La
función fwrite transfiere a un archivo un
número especificado de bytes empezando en un posición
especificada de memoria.
La
función fread transfiere un número especificado de
bytes de la posición en el archivo, especificado por el apuntador
de posición de archivo, a un área de memoria empezando
a partir de una dirección especificada. Ahora al escribir
un entero, en vez de utilizar la función fprintf,
fprintf(fPtr,
"%d", number);
con
la que podría imprimir desde un dígito hasta un máximo
de 11 dígitos, podemos utilizar fwrite que siempre escribira
4 bytes de la variable number al archivo representado por fPtr.
fwrite
(&number, sizeof(int), 1, fPtr);
Se
utiliza un combinación de las funciones fseek y fwrite
para almacenar datos en posiciones específicas dentro de
un archivo de aceso directo. Así, la función fseek
define un apuntador de posición de archivo a una posición
específica dentro del archivo y, a continuación fwrite
escribe los datos.
El
ANSI muestra la función prototipo para fseek como:
int
fseek (FILE *stream, long int offset, int whence);
Aunque
fread y fwrite leen y escriben datos en tamaño fijo en vez
de en formato de tamaño variable, los datos que manejan se
procesan en formato de computadora, en bytes de datos, en vez de
en formato legible como lo hace printf y scanf.
|