instituto técnico “jesús obrero” 4to año programación profesor: … · 2012. 4. 29. ·...
TRANSCRIPT
Instituto Técnico “Jesús Obrero”
4to año – Programación
Profesor: Luis Vallenilla
Archivos en Lenguaje C
Definición
Prof. Luis Vallenilla
Estructura de datos dinámica y homogénea,
compuesta por una colección de registros del
mismo tipo y almacenada en dispositivos de
almacenamiento secundarios (diskettes, disco
duros, pendrivers, entre otros). Solo almacenan
datos, no los procesan.
Representación Gráfica
Archivos en Lenguaje C
Ciclo de trabajo de un Archivo
Prof. Luis Vallenilla
Archivos en Lenguaje C
Elementos de un archivo
Prof. Luis Vallenilla
Luis16599375
María16588777
Registro
Registro
0
1
Posición
Punterodel
Archivo
Cliente (alias por el que se maneja el archivo en el programa “dirección lógica”)
C:\Mis documentos\clientes.dat Dirección física del archivo
Archivos en Lenguaje C
Pasos para declarar un archivo
Prof. Luis Vallenilla
1.- Declarar el modelo del registro que contendrá el
archivo. Esto se realiza luego de los includes, mediante
la instrucción struct
Ejemplo:
struct cliente
{
long cedula;
char nombre[50];
char direccion [100];
char correo [20];
char telefono [20];
char fechan[20];
bool eliminado;
};
Archivos en Lenguaje C
Pasos para declarar un archivo
Prof. Luis Vallenilla
2.- Declarar como global una variable tipo FILE, la cual
será la que maneje el alias del nombre del archivo en el
programa
Sintaxis: FILE *alias;
Ejemplo
FILE * clientes;
Archivos en Lenguaje C
Operaciones básicas con archivos
Prof. Luis Vallenilla
1. Creación o Apertura
2. Agregar
3. Consultar
4. Actualizar
(eliminar/modificar)
5. Cerrar
Todas las funciones para el manejo de archivos se encuentran
dentro de la librería stdio.h
Archivos en Lenguaje C
Funciones para manejar un archivo
Prof. Luis Vallenilla
Función fopen: permite realizar la apertura del archivo así
como establecer la conexión entre la dirección física del
mismo y su alias o dirección lógica.
Sintaxis: variablearchivo = fopen (“direccionfísica”, “modo de apertura”);
Modo de apertura1.- rb2.- wb
3.- rb+
4.- ab
Operación1.- Abre el archivo sólo para lectura. Debe existir2.- Abre el archivo modo escritura. Si el archivo existe lo borra .Si no existe lo crea3.- Abre el archivo en modo lectura/escritura. Debe existir el archivo4.-Abre el archivo en modo agregar. Si el archivo existe agrega los datos al final. Si no existe lo crea
Archivos en Lenguaje C
Funciones para manejar un archivo
Prof. Luis Vallenilla
Ejemplos de apertura de una archivo
clientes = fopen (“c:\Mis documentos\Clientes.dat”,”rb”);
clientes = fopen (“c:\Mis documentos\Clientes.dat”,”wb”);
clientes = fopen (“c:\Mis documentos\Clientes.dat”,”rb+”);
clientes = fopen (“c:\Mis documentos\Clientes.dat”,”ab”);
Archivos en Lenguaje C
Funciones para manejar un archivo
Prof. Luis Vallenilla
Para realizar el proceso de apertura de un archivo se debe
realizar una validación para determinar si el archivo
existe o no. Si el archivo no existe la función fopen
devolverá un valor NULL.
Archivos en Lenguaje C
Funciones para manejar un archivo
Prof. Luis Vallenilla
Proceso de apertura de un archivo con validación (se
ejecuta una sola vez):
void aperturaarchivo()
{
clientes = fopen ("clientes1.dat","rb");
if (clientes == NULL)
clientes = fopen ("clientes1.dat","wb");
fclose(clientes);
}
Nota: El archivo se crea en la misma carpeta donde se almacena el programa
fuente
Archivos en Lenguaje C
Funciones para manejar un archivo
Prof. Luis Vallenilla
Función fclose: permite realizar el cierre de un archivo,
pasando como parámetro su alias.
Sintaxis: fclose(alias);
Ejemplo: fclose(clientes);
Archivos en Lenguaje C
Funciones para manejar un archivo
Prof. Luis Vallenilla
Función fwrite: permite agregar registros a un archivo. Un
fwrite se ejecuta luego de que se han leído cada uno de
los campos del registro y se han almacenado en una
variable tipo struct.
Sintaxis: fwrite(&varregistro, sizeof(varregistro),1,alias);
Ejemplo: fwrite(&c,sizeof(c), 1, clientes);
Variable
registro
Tamaño en
bytes del
registro
Cantidad de
registros
Archivos en Lenguaje C
Funciones para manejar un archivo
Prof. Luis Vallenilla
Ejemplo operación de Agregar en un Archivo:
void agregar(struct cliente c, int &cc)
{
clrscr();
gotoxy(30,5);
cout <<"Cedula:";
cin >> c.cedula;
titulos();
gotoxy(40,6);
cin >> c.nombre;
gotoxy(40,7);
cin >> c.direccion;
gotoxy(40,8);
cin >> c.correo;
gotoxy(40,9);
cin >> c.telefono;
gotoxy(55,10);
cin >> c.fechan;
c.eliminado = false; // EL REGISTRO EXISTE
clientes = fopen("clientes1.dat",”ab");
fwrite(&c, sizeof(c),1,clientes);
fclose(clientes);
}
void titulos ()
{
gotoxy(20,6);
cout <<"Nombre:";
gotoxy(20,7);
cout <<"Direccion:";
gotoxy(20,8);
cout <<"Correo:";
gotoxy(20,9);
cout <<"Telefono:";
gotoxy(20,10);
cout <<"Fecha de nacimiento dd/mm/aaaa:";
}
Archivos en Lenguaje C
Funciones para manejar un archivo
Prof. Luis Vallenilla
Función fread: permite extraer un registros de un archivo.
Un fread almacena en una variable registro en memoria
Ram los datos extraídos.
Sintaxis: fread(&varregistro, sizeof(varregistro),1,alias);
Ejemplo: fread(&c,sizeof(c), 1, clientes);
Nota: Luego de que se ejecuta una instrucción fread el puntero del archivo pasa
automáticamente al registro siguiente
Variable
registro
Tamaño en
bytes del
registro
Cantidad de
registros
Archivos en Lenguaje C
Funciones para manejar un archivo
Prof. Luis Vallenilla
Ejemplo operación de Consultar en un Archivo:
void consultar1(struct cliente c, int &cc)
{
clrscr();
clientes = fopen("clientes1.dat","rb");
fread(&c, sizeof(c),1,clientes);
fclose(clientes);
escribir(c);
getch();
}
void escribir (struct cliente c)
{
clrscr();
cout << "Cedula: "<< c.cedula << endl;
cout << "Nombre: "<< c.nombre << endl;
cout << "Direccion: " << c.direccion << endl;
cout << "Correo: " << c.correo << endl;
cout << "Telefono: " << c.telefono << endl;
cout << "Fecha de nacimiento dd/mm/aaaa: " <<
c.fechan << endl;
}
Nota: Observe que mediante este código siempre se consulta el primer registro
del archivo, esto debido a que al abrir el archivo el puntero se ubica en la posición
0. Para ubicar el puntero del archivo en una posición especifica se debe usar la
función fseek
Archivos en Lenguaje C
Funciones para manejar un archivo
Prof. Luis Vallenilla
Función fseek: permite ubicar el puntero del archivo en una
posición especifica del mismo.
Sintaxis: fseek(alias, sizeof(varregistro)*posicion,0);
Ejemplo: fseek(clientes, sizeof(c)*1,0); Esta línea estaría
ubicando el puntero del archivo en la posición 1 del
mismo
Modo:
desde el
principio del
archivo
Archivos en Lenguaje C
Funciones para manejar un archivo
Prof. Luis Vallenilla
Función feof: permite determinar si el puntero del archivo
ha alcanzado el final del mismo. Si encuentra el final del
archivo devuelve un valor diferente de cero y cero en
caso contrario. Es usado en la consulta masiva y
búsqueda.
Sintaxis: feof(alias);
Ejemplo: feof(clientes);
Archivos en Lenguaje C
Programa Completo
Prof. Luis Vallenilla