ejemplo de archivos estructurados
ıtulo 1
Manipulaci´n de archivos
o
estructurados
1.1.
Introducci´n
o
Definici´n Un archivo es un medio de almacenamiento no vol´til, es decir
o
a
permanece luego de terminar la aplicaci´n que la utiliza o luego de apagar el
o
computador. Un archivo se almacena en memoria secundaria como el disco duro,
cd, dvd, etc.
Los archivos llevan asociado un nombre y una extensi´n,´sta ultima permite
o e
´
identificar el tipo del archivo, por ejemplo doc, jpg, bmp, cpp, etc.
Los archivos estructurados se caracterizan por que almacenan los datos respetando un patr´n espec´
o
ıfico que ocupa un determinado espacio. Una de las
aplicaciones m´s comunes en la que se utiliza archivos estructurados es el de
a
las bases de datos. Supongamos que deseamos almacenar datos delibros en un
archivo, entonces los datos se estructurar´n de acuerdo a lo que interesa almaa
cenar de cada libro, en este caso podemos necesitar representar el t´
ıtulo, autor,
a˜o de edici´n, ISBN y editorial. Entonces un conjunto de datos de varios libros
n
o
se ver´n como en la figura 1.1.
a
Cada uno de los libros en el archivo se representa por un registro. Todos
los registros del archivose almacenan siguiendo una estructura (struct en C o
C++), discutiremos en la siguiente secci´n c´mo crear una estructura para los
o o
registros, seguiremos usando el ejemplo del libro.
1.2.
Estructuras (struct)
Supongamos que tenemos la siguiente estructura para cada registro de libro:
-------------------------------------------------ISBN | TITULO | AUTOR |ANIO EDICION | EDITORIAL-------------------------------------------------Lo primero es determinar el tipo de dato de cada elemento de la estructura,
cada elemento se denomina campo, en el ejemplo hay 5 campos.
1
2
´
CAP´
ITULO 1. MANIPULACION DE ARCHIVOS ESTRUCTURADOS
Figura 1.1: Vista l´gica de un archivo de registros de libros.
o
ISBN: un entero
TITULO: cadena de 20
AUTOR: cadena de 20
ANIO EDICION:entero
EDITORIAL: cadena de 20
La implementaci´n en C o C++ es como sigue:
o
typedef struct Libro
{
int ISBN;
char titulo[20];
char autor[20];
int anio;
char editorial[20];
}TLibro;
donde TLibro se utiliza como un nuevo tipo de dato que representa un tipo
para cada libro, entonces un libro en particular se puede definir como:
LIBRO miLibro;
y para acceder a cada uno de sus camposutilizaremos el operador punto (.),
por ejemplo:
miLibro.ISBN=2344;
miLibro.titulo="C y C++";
miLibro.autor="D. Ritchie";
miLibro.anio=1999;
miLibro.editorial="Alfa";
Ahora, utilizaremos un archivo para guardar cada registro, esto lo veremos
en la siguiente secci´n.
o
1.3. OPERACIONES CON ARCHIVOS
1.3.
3
Operaciones con archivos
Para manipular un archivo utilizaremos el tipoFILE (en realidad crearemos
un puntero de tipo FILE) y usaremos las siguientes funciones de stdlib.h.
fopen: Para abrir un archivo y asociarlo con un puntero de tipo FILE. La
sintaxis es como sigue:
FILE *fopen(char *nombre, char *modo)
donde nombre es el nombre del archivo, en el que se puede incluir la ruta
y modo indica la forma en que puede usarse el archivo:
“w ” Para crear un archivo.“r ” Para leer un archivo.
“a ” Para aadir datos al archivo.
Ejemplo:
FILE *f = fopen("libros.txt","r");
fread: Lee datos del archivo y los pasa a la memoria principal.
fread(void *puntero, size_t tamanyo, size_t nmemb, FILE *f)
donde puntero indica el espacio de memoria en d´nde se almacenar´n los
o
a
datos, tamanyo es la cantidad de bytes a leer, nmemb es la cantidad de
veces que seleer´ (asumiremos igual a 1), y f representa el archivo.
a
fwrite: Lee datos de la memoria principal y los pasa al archivo.
fwrite(void *puntero, size_t tamanyo, size_t nmemb, FILE *f)
donde puntero indica el espacio de memoria desde d´nde se leeran los
o
datos, tamanyo es la cantidad de bytes a escribir, nmemb es la cantidad
de veces que se escribir´n (asumiremos igual a 1), y f...
Regístrate para leer el documento completo.