Diapositiva 1 - Programación 4to año ITJO

Transcripción

Diapositiva 1 - Programación 4to año ITJO
Instituto Técnico “Jesús Obrero”
4to año – Programación
Profesor: Luis Vallenilla
Archivos en Lenguaje C
Definición
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
Prof. Luis Vallenilla
Archivos en Lenguaje C
Ciclo de trabajo de un Archivo
Prof. Luis Vallenilla
Archivos en Lenguaje C
Elementos de un archivo
Cliente (alias por el que se
maneja el archivo en el
programa “dirección
lógica”)
Puntero
del
Archivo
Posición
Prof. Luis Vallenilla
0
Luis
16599375
Registro
1
María
16588777
Registro
C:\Mis documentos\clientes.dat
Dirección física del archivo
Archivos en Lenguaje C
Pasos para declarar un archivo
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;
};
Prof. Luis Vallenilla
Archivos en Lenguaje C
Pasos para declarar un archivo
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;
Prof. Luis Vallenilla
Archivos en Lenguaje C
Operaciones básicas con archivos
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
Prof. Luis Vallenilla
Archivos en Lenguaje C
Funciones para manejar un archivo
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 apertura
1.- rb
2.- wb
3.- rb+
4.- ab
Prof. Luis Vallenilla
Operación
1.- Abre el archivo sólo para lectura. Debe existir
2.- Abre el archivo modo escritura. Si el archivo
existe lo borra .Si no existe lo crea
3.- Abre el archivo en modo lectura/escritura.
Debe existir el archivo
4.-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
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”);
Prof. Luis Vallenilla
Archivos en Lenguaje C
Funciones para manejar un archivo
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.
Prof. Luis Vallenilla
Archivos en Lenguaje C
Funciones para manejar un archivo
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
Prof. Luis Vallenilla
Archivos en Lenguaje C
Funciones para manejar un archivo
Función fclose: permite realizar el cierre de un archivo,
pasando como parámetro su alias.
Sintaxis: fclose(alias);
Ejemplo: fclose(clientes);
Prof. Luis Vallenilla
Archivos en Lenguaje C
Funciones para manejar un archivo
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);
Variable
registro
Tamaño en
bytes del
registro
Ejemplo: fwrite(&c,sizeof(c), 1, clientes);
Prof. Luis Vallenilla
Cantidad de
registros
Archivos en Lenguaje C
Funciones para manejar un archivo
Ejemplo operación de Agregar en un Archivo:
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:";
}
Prof. Luis Vallenilla
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);
}
Archivos en Lenguaje C
Funciones para manejar un archivo
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);
Variable
registro
Tamaño en
bytes del
registro
Cantidad de
registros
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
Prof. Luis Vallenilla
Archivos en Lenguaje C
Funciones para manejar un archivo
Ejemplo operación de Consultar en un Archivo:
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;
}
void consultar1(struct cliente c, int &cc)
{
clrscr();
clientes = fopen("clientes1.dat","rb");
fread(&c, sizeof(c),1,clientes);
fclose(clientes);
escribir(c);
getch();
}
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
Prof. Luis Vallenilla
Archivos en Lenguaje C
Funciones para manejar un archivo
Función fseek: permite ubicar el puntero del archivo en una
posición especifica del mismo.
Sintaxis: fseek(alias, sizeof(varregistro)*posicion,0);
Modo:
desde el
principio del
archivo
Ejemplo: fseek(clientes, sizeof(c)*1,0); Esta línea estaría
ubicando el puntero del archivo en la posición 1 del
mismo
Prof. Luis Vallenilla
Archivos en Lenguaje C
Funciones para manejar un archivo
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);
Prof. Luis Vallenilla
Archivos en Lenguaje C
Programa Completo
Prof. Luis Vallenilla

Documentos relacionados