Vous êtes sur la page 1sur 4

Archivos

El almacenamiento de datos en variables y en arreglos es temporal, al terminar un


programa todos estos datos se pierden. Para conservar los datos en grandes cantidades se
usan los archivos. Los computadores almacenan los archivos en dispositivos de
almacenamiento.

Todos los elementos que procesa un computador se reducen a combinaciones de ceros y
unos. Esto es por que se aprovechan los estados de la electricidad asumiendo dos estados,
uno representa a 0 y el otro al uno.

En un computador el elemento ms pequeo de dato puede asumir el valor 0 o 1. Este
elemento es un bit. Los circuitos realian manipulaciones de bits.

!er"a muy complicado mane#ar la in$ormaci%n a nivel de bits, en ves de ello nosotros
pre$erimos traba#ar con datos en $orma de d"gitos decimales, letras y s"mbolos especiales.
Los s"mbolos, letras, d"gitos se conocen como caracteres. &ebido que los computadores
solo pueden procesar unos y ceros, todo carcter de un con#unto de caracteres en un
computador es procesado como un patr%n de 1s y 0s.

'l igual que los caracteres estn $ormados por bits, los campos se componen de caracteres.
(n campo es un grupo de caracteres que contiene un signi$icado. Por e#emplo) un campo de
letras may*sculas y min*sculas puede usarse para representar el nombre o el apellido de
una persona.

Los elementos de datos procesador por los computadores $orman la #erarqu"a de datos, en
la cual los elementos de datos se convierten en ms grandes y comple#os, en cuanto a
estructura con$orme progresamos desde los bits, hacia los caracteres +bytes,, hacia los
campos y as" sucesivamente.

(n registro se compone de varios campos. +en - un registro es un struct,. En un sistema de
registro de alumnos en la (niversidad por e#emplo, un alumno puede estar $ormado por los
siguientes campos)

11. .(T.
2/. 0ombre
31. &irecci%n
42. -arrera
53. 'o 4ngreso

Entonces un registro es un grupo de campos relacionados. -ada uno de los campos
corresponde a un mismo alumno. 0aturalmente la (niversidad tiene muchos alumnos, y
para cada alumno tendr un registro. (n archivo es un grupo de registros relacionados. El
archivo de registros de la (niversidad contiene un registro para cada alumno. Entonces un
archivo para un pequeo colegio, puede contener unos tantos cientos de registros, pero un
archivo de registro para una (niversidad grande puede contener $cilmente miles de
registros.
E5isten muchas $ormas de organiar los registros dentro de un archivo. El ms
popular se conoce como archivo secuencial, en el cual los registros se almacenan en orden
secuencial, en relaci%n con el campo de registro clave. El registro clave es para $acilitar la
recuperaci%n de la in$ormaci%n de registros espec"$icos a partir de un archivo, por lo menos
un campo de cada registro se selecciona como registro clave. Por e#emplo el registro clave
para identi$icar una persona como *nica dentro de un archivo es el .(T.

Los registros normalmente se ordenan por el .(T. El primer registro de un alumno
contiene el n*mero ms ba#o del .(T y los subsiguientes contienen cada ve ms altos.

Para almacenar datos la mayor parte de las empresas usan muchos archivos. Por
e#emplo las empresas pueden tener archivos para las n%minas de sus empleados, archivos
de cuentas por cobrar, archivos de cuentas por pagar, archivos de inventario, y muchos
otros. ' veces un grupo de archivos relacionados se conoce como una base de datos. (na
colecci%n de programas diseado para crear y administrar bases de datos ese conoce como
un sistema de administraci%n de base de datos.

Archivos y flujos

- ve un archivo simplemente como un $lu#o secuencial de bytes, cada archivo termina con
un marcador de $in de archivo o en un n*mero de bytes espec"$ico registrado en una
estructura administrativa de datos, mantenida por el sistema. -uando un archivo se abre se
asocia un $lu#o con el archivo. 'l empear la e#ecuci%n de un programa se abren tres
archivos y sus $lu#os asociados +la entrada estndar, la salida estndar y el error estndar,.
Los $lu#os proporcionan canales de comunicaci%n entre archivos y programas. Por e#emplo
el $lu#o de entrada estndar permite que un programa lea datos del teclado, el $lu#o de salida
estndar permite que un programa imprima datos en pantalla. 'brir un archivo regresa un
apuntador a una estructura 64LE +que est de$inida en 7stdio.h8, que contien in$ormaci%n
usada para procesar el archivo. Esta estructura incluye un descriptor de archivo, es decir un
"ndice a un arreglo del sistema operativo conocido como tabla de archivo abierto. -ada
elemento del arreglo tiene un bloque de control de archivo usado por el sistema operativo
para administrar el archivo particular. La entrada estndar, salida estndar y error estndar
son mane#ados usando los punteros de archivo stdin, stdout y stderr.

La biblioteca estndar proporciona muchas $unciones para leer datos de los archivos y para
escribir datos a los archivos.

La funcin fgetc

.ecibe como argumento un apuntador 64LE para el archivo del cual se leer un carcter.
La llamada fgetc(stdin), lee un carcter de stdin +la entrada estndar,

La $unci%n fputc
Escribe un carcter en un archivo. La $unci%n $putc recibe como argumento un carcter
para ser escrito y un apuntador al archivo hacia el cual el carcter ser escrito. La llamada
de $unci%n $putc +9a:, stdout, escribe el carcter 9a: a stdout.

;arias otras $unciones usadas para leer datos de la entrada estndar y para escribir datos a
la salida estndar, tienen $unciones de procesamiento de archivo similarmente identi$icados.
Las $unciones $gets y $puts por e#emplo pueden ser usadas para leer una l"nea de un archivo
y para escribir una l"nea a un archivo.

Archivo de acceso secuencial

- no impone estructuras a un archivo. Por lo tanto en - no e5iste el concepto de registro de
un archivo. Para que cumpla con los requisitos de cada aplicaci%n, el programador debe
proporcionar alguna estructura.

Por e#emplo creemos archivo de acceso secuencial, que podr"a ser usado en un sistema de
cuentas para llevar el control de las cantidades que deben los alumnos a la (niversidad.

Para cada alumno el programa obtiene un n*mero de matricula, el nombre del alumno y el
saldo del mismo. Los datos obtenidos de cada alumno constituyen un registro para cada
uno. En esta aplicaci%n el n*mero de matr"cula se usa como registro clave. El archivo ser
creado y mantenido por orden de n*mero de matr"cula.

<include7stdio.h8
main+,
=
int n>matricula?
char nombre@10A?
$lota saldo?
64LE Barchivo?

archivo C open+Dalumnos.datE,EFE,?
print$+D4ngrese n*mero de matr"cula, nombre y saldo E,?
print$+D4ngrese GH para $inaliar la entrada de datosE,?
scan$+DIdIsI$E, Jn>matricula, nombre, Jsaldo,?
Fhile+K$eo$+stdin,,
=
$print$+archivo, DId Is I./$LnE, n>matricula, nombre, saldo,?
print$+DM E,? scan$+DIdIsI$E, Jn>matricula, nombre, Jsaldo,?
N
$close+archivo,?
return 0?
N

E5aminando el programa)

El enunciado 64LE Barchivo establece que archivo es un apuntador a una estructura 64LE.
El programa - administra cada archivo como una estructura 64LE por separado. Para usar
archivos el programador no necesita saber los detalles espec"$icos de la estructura 64LE.

-ada archivo abierto debe tener un apuntador declarado por separado del tipo 64LE, que es
usado para re$erirse al archivo.

La l"nea Archivo = fopen(alumnos.dat,w);

0ombra el archivo Dalumnos.datE para ser usado por el programa y establece una l"nea de
comunicaci%n con el archivo. El apuntador del archivo archivo es asignado a un apuntador
a la estructura 64LE para el archivo abierto con fopen.

La $unci%n fopen toma los argumentos, un nombre de archivo y un modo de apertura del
archivo. El modo del archivo abierto DFE indica que el archivo debe ser abierto para
escritura. !i e5iste el archivo y es abierto para escritura, el contenido del archivo se
descarta sin advertencia. !i no e5iste el archivo y es abierto para escritura, fopen lo crea.

El programa le solicita al usuario que introduca los varios campos de cada registro o que
introduca $in de archivo cuando estO completa la entrada de datos.

La l"nea While(!feof(stdin))

(sa la $unci%n feof para determinar si el indicador de $in de archivo est de$inido para el
archivo al que se re$iere stdin. El indicador de $in de archivo le in$orma al programa que ya
no hay ms datos a procesarse. La $unci%n regresa un valor verdadero una ve de$inido el
indicador de $in de archivo, de lo contrario regresa un cero +$also,.

La l"nea fprintf(archivo, %d %s %.f, n!matricula, nom"re, saldo);

Escribe los datos al archivo alumnos.dat. Los datos pueden ser recuperados ms tarde
mediante un programa diseado para leer el archivo. La $unci%n fprintf es equivalente a
printf, e5cepto que fprintf tambiOn recibe como argumento un apuntador de archivo para el
archivo al cual se escribiran los datos.

&espuOs que se introdu#eron los datos, y e#ecutado el $in de archivo, el programa cierra el
archivo alumnos.dat usando la $unci%n fclose. Esta $unci%n tambiOn recibe el apuntador de
archivo como argumento. !i no se llama a la $unci%n fclose normalmente cuando la
e#ecuci%n del programa termine el sistema operativo cerrar el archivo. Es recomendable
siempre cerrar los descriptores de archivo y no de#arle esa tarea al sistema operativo.

Vous aimerez peut-être aussi