Vous êtes sur la page 1sur 6

UNIVERSIDAD DE EL SALVADOR

FACULTAD DE INGENIERIA Y ARQUITECTURA


ESCUELA DE INGENIERIA DE SISTEMAS INFORMATICOS
PROGRAMACION I
Ciclo II-2014

UNIDAD IV: INTRODUCCION AL MANEJO DE ARCHIVOS


Objetivo de la Unidad: Conocer el concepto de archivo y aprender a manipularlos con programas
en el lenguaje de programacin C.
Hasta el momento, se ha trabajado con datos introducidos por teclado que residen temporalmente
(mientras se ejecuta el programa) en memoria principal. Cuando se tienen pocos datos, esta
modalidad de lectura resulta muy fcil y rpida; pero, cuando el programa necesita muchos datos la
introduccin de los mismos es una tarea tediosa, repetitiva y en la que se pueden cometer errores. Al
trabajar con archivos la introduccin de informacin se vuelve ms rpida y se corre menos riesgo de
equivocacin, ya que los datos son tomados o ledos directamente desde un archivo. Otra ventaja de
trabajar con archivos de datos, es en la depuracin de programas, ya que cada vez que se prueba el
programa no es necesario digitar de nuevo los datos, simplemente se vuelve a leer el archivo que
contiene la informacin y de all se toman los datos.
Un archivo, tambin denominado fichero (o file en ingls), es una estructura de datos dinmica, es
decir que su dimensin (o tamao) cambia de acuerdo a la cantidad de datos almacenada. Para
trabajar con archivos, no se necesita reservar espacio en memoria o dimensionar la estructura (como
con los vectores y las matrices). Un archivo es una coleccin de datos relacionados entre s,
localizados o almacenados como una unidad, en algn dispositivo de memoria auxiliar: disco duro
(unidad c), CD o DVD (unidad d), memoria USB (unidad e). Los datos almacenados en un archivo
pueden ser de diferentes tipos, es decir que la estructura puede contener datos reales, enteros y
alfanumricos.
Por ejemplo, suponer que se tienen los siguientes datos de un alumno para trabajar en un programa:
Nombre, Carnet y cinco notas de cada uno de los exmenes realizados
al tener varios alumnos (con los mismos datos para cada uno), estos se pueden almacenar en un
archivo de la siguiente forma:
Jose Antonio Campos Alas CA09001 6.5 7.1 4.7 6.3 5.4 Ana Maribel Fernandez FF10005 7.0 5.1 6.9 4.3
6.4 Carlos Luis Lopez Villegas LV11007 5.1 6.7 5.4 7.1 4.9 Ester de Jesus Vides VV11006 9.1 7.0 6.8
7.6 8.5
Cada juego de datos, o sea el grupo de datos de un alumno se conoce como registro y cada uno de
los datos se denomina campo. En general, un registro puede contener varios datos (o campos) y los
campos pueden ser de diferentes tipos, en un archivo todos los registros deben contener los mismos
campos y en el mismo orden.
Se puede visualizar un archivo de la siguiente forma:
REGISTRO
Nombre
Jose Antonio Campos Alas
Ana Maribel Fernandez
Carlos Luis Lopez Villegas
Ester de Jesus Vides

Carnet
CA09001
FF09002
LV11007
VV11006

Nota1
6.5
7.0
5.1
9.1

Nota2
7.1
5.1
6.7
7.0

CAMPO
1

Nota3
4.7
6.9
5.4
6.8

Nota4
6.3
4.3
7.1
7.6

Nota5
5.4
6.4
4.9
8.5

En donde, un registro es toda una lnea de la tabla anterior (el grupo de datos de un alumno) y un
campo es uno de los datos de un alumno (el carnet o la nota5, por ejemplo); en este ejemplo el
registro est formado por 7 campos, los primeros dos son alfanumricos y los siguientes cinco son de
tipo real o de punto flotante.
No se podran almacenar o trabajar estos datos como un arreglo bidimensional (matriz), ya que en
sta slo se pueden almacenar datos del mismo tipo. Entonces, la caracterstica de los archivos de
poder almacenar datos de diferentes tipos, se convierte en una de sus principales ventajas. Eso s,
cada registro debe tener la misma organizacin u orden en sus campos, es decir todos los campos 1
de los registros deben almacenar el mismo tipo de informacin (para el ejemplo, el nombre).
Para trabajar con un archivo, se le debe dar un nombre o identificador, igual que a las variables,
vectores, matrices y mdulos; para ello se seguirn las mismas normas: el primer carcter debe ser
una letra, despus se pueden combinar letras y nmeros nicamente y, el guin bajo _.

Caractersticas

Gran capacidad de almacenamiento, los archivos son estructuras dinmicas y su lmite o


capacidad mxima depende exclusivamente de la capacidad del dispositivo donde se encuentra
almacenado.

No necesita un tamao predeterminado, el archivo puede ir creciendo en dimensin segn se le


ingresen ms registros, o disminuir su tamao cuando se borren registros.

La informacin almacenada (o datos) es permanente, ya que est guardada en dispositivos de


memoria auxiliar. A diferencia de los arreglos que contienen los datos (o existen en memoria)
nicamente durante la ejecucin del programa.

Independencia de los datos respecto a los programas, lo que facilita la ejecucin de un programa,
ya que las entradas (y/o salidas) son realizadas desde un archivo. La introduccin de datos forma
parte de la creacin y actualizacin del archivo y no de la ejecucin del programa.

Un archivo puede ser utilizado por distintos programas, en distintos momentos; es decir que, el
mismo grupo de datos puede servir para ms de un programa.

Clasificacin
Existen dos tipos de archivos: archivos de texto y archivos binarios.
Un archivo de texto, es una secuencia de caracteres organizadas en lneas terminadas por un
carcter de nueva lnea (\n), cuyo contenido se puede observar en cualquier editor de texto. Algunos
ejemplos de este tipo de archivo son: archivos de datos, archivos con extensiones html, xml, xsll, etc.
O programas fuentes en lenguajes de programacin de tercera generacin: C, java, pascal, etc.
Un archivo binario, es una secuencia de bytes, que no tienen ninguna traduccin de caracteres
como por ejemplo: fotografas, imgenes, msica, programas ejecutables, etc.
En esta asignatura se abordarn solamente los archivos de texto (una lista organizada de datos
(caracteres) o, como ya se mencion, una estructura de datos dinmica).

Organizacin
Los archivos se encuentran lgicamente organizados como una secuencia de registros, cuya longitud
puede variar dependiendo del tipo.
2

Archivos de registros de longitud fija: Son aquellos que capturan los datos o la informacin
mediante un encabezado y luego se introduce (o almacena) uno a uno los registros ubicados en
posiciones consecutivas dentro del archivo. Todos los registros del archivo tienen los mismos
campos y en el mismo orden.
Archivos de registros de longitud variable: Son aquellos que permiten registros de varios tipos, es
decir que uno o ms campos del registro cambian de longitud (o tipo) y estos (campos) pueden ser
repetidos. La longitud de los registros debe estar definida correctamente para poder leer y escribir de
forma efectiva.
Para manejar los datos que se almacenan en un archivo se tienen dos tipos de enfoques, que ayudan
a la organizacin de los archivos:
1. Enfoque de acceso secuencial: Permite el manejo de archivos en un orden especfico,
registro por registro, es decir secuencialmente: un registro detrs de otro, desde el inicio del
archivo hasta el final, se conocen como archivos secuenciales.
2. Enfoque de acceso directo: Permite el manejo de archivos por registros individuales, sin
leer otros registros del archivo, se conocen como archivos indexados.

Tipos de Acceso
El tipo de acceso a la informacin dentro de un archivo, se refiere al mtodo utilizado para acceder a
los registros de un archivo prescindiendo de su organizacin. Existen varas formas de acceder a los
datos:
Secuencial: permite leer los registros en orden uno por uno desde el principio del archivo hasta el
final, de tal forma que para leer el registro 50, se deben leer los primeros 49 registros.
Directo: permite obtener un registro de forma directa con slo expresar la direccin del registro
dentro del archivo, mediante el nmero relativo del registro. Es decir que basta con indicar qu
nmero de registro se requiere (el 50, por ejemplo).
Por Indice: permite acceder indirectamente a los registros por su clave, realizando consultas
secuenciales a una tabla que contiene la clave del registro y su direccin relativa de cada registro
dentro de un archivo.
Dinmico: permite obtener un registro de un archivo, con cualquiera de los tres mtodos anteriores.
La eleccin del mtodo est directamente relacionada con la estructura de los registros del archivo y
del soporte utilizado. Para esta asignatura, se trabajar con el acceso secuencial.

Funciones para Manejo de Archivos


El manejo de archivo involucra las siguientes operaciones generales:
Creacin: Con esta operacin se logra exactamente eso: crear el archivo, identificarlo con su
nombre y se pueden escribir algunos o todos los registros del mismo.
Consulta: Consiste en poder leer (o consultar) uno o todos los registros de un archivo.
Actualizacin: Con esta operacin se puede agregar, suprimir o modificar uno o varios
registros de un archivo.
3

Clasificacin: Permite la reubicacin de los registros dentro del archivo, de tal forma que
queden ordenados segn determinados criterios.
Borrado: Consiste en eliminar o borrar completamente el archivo, dejando libre el espacio en
el dispositivo que lo contena almacenado.
En C, un archivo es un concepto lgico que puede aplicarse a muchas cosas, desde archivos en
disco hasta terminales o a otros dispositivos como impresoras. Se asocia una secuencia de datos (o
caracteres) con un archivo especfico realizando una operacin de apertura; una vez que el archivo
est abierto, la informacin puede ser intercambiada entre ste (es decir, el archivo) y el programa
que lo manipula.
C, no tiene palabras claves que realicen las operaciones de entrada y salida, siempre utiliza funciones
propias del lenguaje; se puede conseguir la entrada y salida de datos a (de) un archivo haciendo uso
de la biblioteca de funciones: stdio.h
La mayora de funciones inician con la letra f, de la palabra file que significa archivo. A
continuacin, se da un breve inventario de las funciones ms utilizadas en el manejo de archivos. Se
debe incluir la librera <stdio.h>:

Apertura de un archivo:

fopen()

Cerrar un archivo:

fclose()

Lectura de un archivo:

fgets(), fscanf(), fgetc()

Escritura en un archivo:

fputs(), fprintf(), fputc()

Verifica el fin del archivo:

feof()

Borrar un archivo:

remove()

Renombrar un archivo:

rename()

Verificar si existe error:

ferror()

Ubicar en el primer registro:

rewind()

Antes de utilizar un archivo en un programa debe ser declarado, es decir indicar al compilador que se
har uso del archivo; para hacerlo se utiliza la palabra FILE (en maysculas) y el nombre del archivo
que se utilizar.
La declaracin de un archivo, al igual que la declaracin de datos, se hace al inicio del mdulo que
har uso del mismo.
Sintxis:

FILE *archivo;
En donde:

archivo

es el identificador o nombre del archivo que se declara


indica el direccionamiento del mismo.

fopen()
Esta funcin abre un archivo para que pueda ser utilizado, desde un programa, dependiendo de la
operacin que se vaya a realizar con el: slo lectura, slo escritura o ambas cosas.
Sintxis:
fopen(archivo, modo);
4

En donde:

archivo
modo

nombre del archivo a abrir


son los caracteres que indican la operacin permitida:
r abrir archivo para lectura, el fichero debe existir.
w abrir archivo para escritura, se crea si no existe o se sobreescribe.
a abrir archivo para escritura al final del contenido, si no existe se crea.
r+ abrir un archivo para lectura y escritura, el fichero debe existir.
w+ crear archivo para lectura y escritura, se crea si no existe o se
sobreescribe si ya existe.
El modo de apertura depende del trabajo que se quiera realizar.

fclose()
Cierra el archivo cuando ya no se va a utilizar. Escribe en el archivo, la informacin que se encuentra
en el buffer y realiza el cierre formal del archivo. Si el cierre se ejecut correctamente, la funcin
devuelve cero (0).
Sintxis:
fclose(archivo);
En donde:

archivo

nombre del archivo a cerrar.

fgets()
Esta funcin lee un registro de un archivo abierto, lee una cadena de caracteres hasta que encuentra
el caracter de fin de lnea (\n) o, el nmero mximo de caracteres indicados.
Sintxis:
fgets(cadena, n, archivo);
En donde:

cadena
n
archivo

indica donde se almacenar la cadena o registro ledo


nmero de caracteres a leer
nombre del archivo abierto

fputs()
Escribe un registro en un archivo, habilitado para tal accin.
Sintxis:
fputs(cadena, archivo);
En donde:
cadena
es el registro o cadena a escribir en el archivo
archivo
es el nombre del archivo abierto

fprintf()
Escribe (o imprime) datos con formato en el archivo.
Sintxis:
fprintf(archivo formato, variable);
En donde:

archivo
formato
variable

es el nombre del archivo abierto


formato de tipo de dato(s) a imprimir
nombre de variable(s) que contiene(n) el(los) dato(s)

fscanf()
Lee una entrada con formato desde el archivo, hasta encontrar un espacio en blanco.
Sintxis:
fscanf(archivo formato, &variable);
En donde:

archivo
formato
variable

es el nombre del archivo abierto


formato de tipo de dato(s) a leer
nombre de variable(s) que contiene(n) el(los) dato(s)
5

feof()
Verifica si se ha llegado al final del archivo; devuelve cero (0) si se ha alcanzado el fin de archivo.
Sintxis:
feof(archivo);
En donde:

archivo

es el nombre del archivo abierto y en uso

remove()
Elimina o borra un archivo completo.
Sintxis:
remove(archivo);
El parmetro siempre es el archivo que se quiere eliminar.

rename()
Le cambia nombre a un archivo. La funcin devuelve cero si el cambio de nombre se realiz
correctamente.
Sintxis:
rename(archivo1, archivo2);
En donde:

archivo1
archivo2

es el nombre actual del archivo, que se necesita cambiar


es el nuevo nombre que se le asigna al archivo

fgetc()
Lee un caracter a la vez del archivo que est siendo sealado con el puntero *archivo. En caso de
que la lectura sea exitosa devuelve el caracter ledo y en caso de que no lo sea o de encontrar el final
del archivo devuelve EOF.
Sintxis:
caracter=fgetc(archivo);
En donde:

archivo
caracter

es el nombre del archivo abierto


variable tipo char donde se almacena el caracter ledo del archivo

fputc()
Escribe un carcter a la vez del archivo que est siendo sealado con el puntero *archivo. El valor de
retorno es el carcter escrito, si la operacin fue completada con xito, en caso contrario ser EOF.
Sintxis:
fputc (caracter, archivo);
En donde:

archivo
caracter

es el nombre del archivo abierto


variable tipo char donde se almacena el caracter digitado

Vous aimerez peut-être aussi