You are on page 1of 9

CONCEPTOS BSICOS DE ARCHIVOS Esta seccin presenta las generalidades relacionadas con archivos antes de empezar a utilizarlos y programarlos.

Es necesario involucrarse con la terminologa relacionada como archivo, registro, campo, etc. Tambin es recomendable conocer las clasificaciones generales y las operaciones fundamentales con archivos.

Cmo surge la necesidad de utilizar archivos?

Hasta antes de la materia de Administracin de Archivos, muchas de las aplicaciones que los alumnos de ISC han programado han sido usando la memoria principal o memoria RAM como nico medio de almacenamiento (usando variables, arreglos o estructuras de datos mas emplejas), con el inconveniente que esto representa: la volatilidad de la memoria RAM; es decir, si se apaga la computadora se pierden los datos. Adems, algunas aplicaciones exigen transportar los datos de una computadora a otra. De ah surge la necesidad dealmacenar dichos datos de forma permanente que permita retenerlos en ciertos dispositivos de almacenamiento secundario por un perodo de tiempo largo sin necesidad de suministrarles energa, de tal forma que permitan transportarlos y utilizarlos en otro equipo computacional.

Definiciones de datos, registros y archivos Datos: Bsicamente se refieren a los testimonios individuales relacionados con hechos, ya sean caractersticas de ciertos objetos de estudio o condiciones particulares de situaciones dadas. Los elementos individuales de los archivos se llaman datos o campos. Por ejemplo un cheque de un banco tiene los siguientes campos: Cuenta habiente, Nmero de cheque, Fecha, Persona a la que se le paga, Monto numrico, Monto con letra, Nota, Identificacin del banco, Nmero de cuenta y Firma. Cada campo es definido por un tipo de dato.

Registro: Es el conjunto completo de datos relacionados pertenecientes a una entrada. Son estructuras cuyos componentes pueden ser de diferente tipo. Para declarar un tipo registro se debe incluir el nombre y el tipo de cada componente del mismo. En C se usa la palabra reservada struct para indicar que el tipo que se est definiendo es un registro o estructura. P. ejem. Un almacn puede retener los datos de sus productos en registros de acuerdo al formato mostrado.

Archivo: En trminos computacionales es una coleccin de datos que tiene un nombre y se guardan en dispositivos de almacenamiento secundario, los cuales pueden ser magnticos, pticos, electrnicos, etc. P. ejem. Diskettes, discos duros, CDs, ZIP drives, flash drives, memory sticks, etc.

FUNCIONES DE MANEJO DE ARCHIVOS EN LENGUAJE C

Esta seccin presenta los aspectos generales de la implementacin de programas de archivos en Lenguaje C. Aunque se puede almacenar cualquier tipo de datos en archivos, aqu se muestran las operaciones del manejo de registros (struct) en archivos, por lo que las funciones que se mencionan a continuacin son las mas importantes para este tipo de datos. Declaracin del alias del archivo Para realizar programas de manejo de archivos en Lenguaje C se requiere el encabezado Standard I/O y se necesita incluirlo de la sig. forma: #include adems es necesario declarar una variable de tipo FILE que opere como el apuntador a la estructura del archivo (alias), esto se logra con la sig. lnea: FILE *alias; La funcin fopen() y modos de apertura de archivos Se usa la funcin fopen para abrir un archivo, determinar el modo de apertura y establecer la va de comunicacin mediante su alias correspondiente. Adems determinar el tipo de contenido del archivo (texto o binario). Esta funcin tiene dos argumentos: el nombre del archivo y su modo, muestra los modos de apertura de archivos de texto y binarios.

Los prototipos correspondientes de fopen y fclose son:

FILE * fopen (const char *filename, const char *opentype); int fclose (FILE *stream);

Cierre de archivos usando fclose() y fcloseall() Antes de dejar de utilizar un archivo es necesario cerrarlo. Esto se logra mediante las funciones fclose o fcloseall. Si se usa fclose es necesario indicarle el alias del archivo que se desea cerrar. La funcin fcloseall cierra todos los archivos abiertos. Ejemplo El siguiente programa abre un archivo que contiene un nombre y cedula de identidad. Luego abre un archivo de salida y escribe estos datos (pero en orden invertido). El archivo de entrada fue creado con un editor de texto. Archivo de entrada: entrada.txt #include int main(){ char ifilename[] = "entrada.txt"; char ofilename[] = "salida.txt"; char name[30]; int idNum; FILE *ofp, *ifp; /* Declara apuntadores a archivo */

ifp = fopen(ifilename,"r"); /* Abre archivo de entrada */ fscanf (ifp,"%s %d",name,&idNum); /* Lee datos de entrada */ ofp = fopen(ofilename,"w"); /* Abre archivo de salida */ fprintf(ofp,"%d %s\n",idNum, name); /* Escribe los datos */ fclose(ifp); fclose(ofp); /* Cierra los archivos */ return 0; } Archivo de salida: salida.txt

Escritura de registros usando fwrite() La funcin fwrite proporciona el mecanism para almacenar todos los campos de un registro en un archivo. Cabe destacar que al utilizar esta funcin, se almacena una variable (de tipo struct) que representa un bloque de datos o campos; es decir, no se almacena campo por campo. Esta funcin tiene cuatro argumentos: la variable que se desea grabar, su tamao en bytes, la cantidad de variables y el alias del archivo donde se desea almacenar Registros Son estructuras cuyos componentes pueden ser de diferente tipo. Para declarar un tipo registro se debe incluir el nombre y el tipo de cada componente del mismo. En C++ se usa la palabra reservadastruct para indicar que el tipo que se est definiendo es un registro o estructura. Tipos de Registros a-. Registros de Datos Un registro de datos se corresponde con una sucesin de valores. Se suele representar, esquemticamente, como un conjunto de cajas pequeas, cada una conteniendo un valor. Los valores se representan de dos formas, formateados o sin formatear. Si los valores de los datos son caracteres legibles por una persona, cada carcter es un valor y diremos que el dato est formateado. Por ejemplo la sentencia. b-. Registro Fin de Fichero

Declaracin de Registros typedef struct { char hostname[LONG_HOST]; int port; } type_address; Declara a type_address como un registro con dos campos, el vector de caracteres hostname y el entero port. Para asignar el valor 1001 al campo port, se indica: type_address.port = 1001; Donde el operador "." indica que se ha seleccionado un miembro del registro. Ejemplo const char FINCAD = char(0); const int MAXCAD = 20; typedef char TCadena[MAXCAD+1]; // MAXCAD caracteres + FINCAD struct Tfecha { int dia, mes, anho; }; struct TPersona { TCadena nombre, apellido1, apellido2; int edad; TCadena nif; Tfecha fecha_nacimiento; } Las declaraciones de variables se realizan normalmente, es decir: TPersona per; Tfecha f1; Los nombres de los campos de un registro son locales a l, por lo que no hay conflicto con otros nombres usados en el mdulo. Una referencia a un campo de un registro consiste en el nombre de la variable registro y el nombre del campo, separados por un punto, por ejemplo: per.edad = 30;

Un registro completo puede aparecer en cualquier parte de una sentencia de asignacin y como parmetros de procedimientos, por ejemplo: per.fecha_nacimiento = f1; Archivos Son una recopilacin de informacin (datos relacionados entre s), localizada o almacenada como una unidad en alguna parte del computador, manejados a travs de programas. Los archivos estn formados por mltiples caracteres que deben ser interpretados en conjunto para poder ejecutarse o visualizarse (exceptuando el texto puro). El tipo de interpretacin de cada archivo est dado por el formato que utiliza (un archivo grfico de formato GIF debe tomarse e interpretarse como tal y no como si fuese de formato ZIP, que es un archivo comprimido). Los archivos pueden contener diferentes tipos de informacin segn su formato: archivos de texto (.txt,), de documentos enriquecidos (.doc, .rtf, .pdf), ejecutables (.exe, .com), datos (.xls, .dbs), imagen (.jpg, .png, .bmp, .gif), audio (.wav, .mp3, .au, .mid), video (.mpg, .avi, .asf), entre otros.

Tipos de Archivos r: Slo abre un fichero para su lectura. w: Si el fichero no existe, lo crea. Si existe, lo borra y aade uno nuevo. a: El fichero debe ( no) existir. Lo abre para aadir informacin al final. r+: El fichero ya existe y lo abre para actualizarlo. w+: Crea un nuevo fichero para actualizarlo y si existe, sobrescribe en l. a+: Abre un fichero para aadir informacin al final. Si no existe, lo crea. Clasificacion de Archivos Segn su Funcin a.- Archivos Permanentes: Son aquellos cuyos registros sufren pocas o ninguna variacin a lo largo del tiempo, se dividen en: - Constantes: Estn formados por registros que contienen campos fijos y campos de baja frecuencia de variacin en el tiempo. - De Situacin: Son los que en cada momento contienen informacin actualizada. - Histricos: Contienen informacin acumulada a lo largo del tiempo de archivos que han sufridos procesos de actualizacin o bien acumulan datos de variacin peridica en el tiempo. b.- Archivos de Movimiento: son aquellos que se utilizan conjuntamente con los maestros (constantes), y contienen algn campo comn en sus registros con aquellos, para el procesamiento de las modificaciones experimentado por los mismos. c.- Archivo de Maniobra o Transitorio: son los archivos creados auxiliares creados durante la ejecucin del programa y borrados habitualmente al terminar el mismo.

Segn sus Elementos - Archivo de Entrada: Una coleccin de datos localizados en un dispositivo de entrada. - Archivo de Salida: Una coleccin de informacin visualizada por la computadora. - Constantes: estn formados por registros que contienen campos fijos y campos de baja frecuencia de variacin en el tiempo. - De Situacin: son los que en cada momento contienen informacin actualizada. - Histricos: Contienen informacin acumulada a lo largo del tiempo de archivos que han sufrido procesos de actualizacin, o bien acumulan datos de variacin peridica en el tiempo. - Archivos de Movimiento o Transacciones: Son aquellos que se utilizan conjuntamente con los maestros (constantes), y contienen algn campo comn en sus registros con aquellos, para el procesamiento de las modificaciones experimentados por los mismos. - Archivos de Maniobra o Transitorios: Son los archivos auxiliares creados durante la ejecucin del programa y borrados habitualmente al terminar el mismo. Declaracin de Archivos La secuencia que usaremos para realizar operaciones con archivos es la siguiente: - Crear un apuntador del tipo FILE * - Abrir el archivo utilizando la funcin fopen y asignndole el resultado de la llamada a nuestro apuntador. - Hacer las diversas operaciones (lectura, escritura, etc). Cerrar el archivo utilizando la funcin fclose. Los prototipos correspondientes de fopen y fclose son: FILE * fopen (const char *filename, const char *opentype); int fclose (FILE *stream);

Ejemplo FUNCIONAL El siguiente programa abre un archivo que contiene un nombre y cedula de identidad. Luego abre un archivo de salida y escribe estos datos (pero en orden invertido). El archivo de entrada fue creado con un editor de texto. Archivo de entrada: entrada.txt Pedro 18878798 #include int main() { char ifilename[] = "entrada.txt"; char ofilename[] = "salida.txt"; char name[30]; int idNum; FILE *ofp, *ifp; /* Declara apuntadores a archivo */ ifp = fopen(ifilename,"r"); /* Abre archivo de entrada */ fscanf(ifp,"%s %d",name,&idNum); /* Lee datos de entrada */ ofp = fopen(ofilename,"w"); /* Abre archivo de salida */ fprintf(ofp,"%d %s\n",idNum, name); /* Escribe los datos */ fclose(ifp); fclose(ofp); /* Cierra los archivos */ return 0; } Archivo de salida: salida.txt 18878798 Pedro

You might also like