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