Está en la página 1de 15

Instituto Tecnolgico Spencer W. Kimball Huehuetenango, Huehuetenango.

Nombre: Miqueas Israel Sales Catedrtico: lvaro Martnez

Tema: Archivos y Registros

Curso: Programacin Carrera: Perito en computacin

Fecha de entrega: 12 de agosto

Bachiller industrial y perito en computacin 2013

Introduccin
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

Miqueas sales

Bachiller industrial y perito en computacin 2013

Contenido

Contenido
Registros ............................................................................................................................. 4 Tipos de Registros................................................................................................................. 4 Archivos.............................................................................................................................. 5 Clasificacin de Archivos ................................................................................................... 6 Segn su Funcin .............................................................................................................. 6 Segn sus Elementos ........................................................................................................ 6 Formas de apertura y escritura de un archivo ......................................................................... 7 El puntero FILE * ............................................................................................................... 8 Apertura del fichero para lectura: fopen ............................................................................. 8 Comprobacin de fichero abierto ....................................................................................... 9 Lectura de caracteres del fichero: getc ............................................................................ 10 Comprobacin de fin de fichero: feof ............................................................................... 11 Cierre del fichero: fclose .................................................................................................. 11 Lectura de lneas del fichero: fgets .................................................................................. 12 La funcin fread ............................................................................................................... 13

Miqueas sales

Bachiller industrial y perito en computacin 2013

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 reservada struct 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;

Miqueas sales

Bachiller industrial y perito en computacin 2013


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

Miqueas sales

Bachiller industrial y perito en computacin 2013


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.

Clasificacin 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.

Miqueas sales

Bachiller industrial y perito en computacin 2013


- 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 algunos campos comunes 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.

Formas de apertura y escritura de un archivo


Para comenzar, vamos a analizar un ejemplo que lee un fichero de texto (origen.txt) y muestra su contenido en la pantalla:
#include <stdio.h> #include <stdlib.h> main() { FILE *fichero; char letra; fichero = fopen("origen.txt","r"); if (fichero == NULL) { printf( "No se puede abrir el fichero.\n" ); exit( 1 ); } printf( "Contenido del fichero:\n" ); letra = getc(fichero); while (feof(fichero) == 0) { printf( "%c",letra ); letra = getc(fichero); } if (fclose(fichero)!= 0) printf( "Problemas al cerrar el fichero\n" ); }

Analizaremos este ejemplo poco a poco detenindonos en:

Miqueas sales

Bachiller industrial y perito en computacin 2013


El puntero FILE Apertura del fichero para lectura: fopen Comprobacin de fichero abierto Lectura de caracteres del fichero: getc Comprobacin de fin de fichero: feof Cierre del fichero: fclose

Y, posteriormente, nos referiremos a: Lectura de lneas del fichero: fgets La funcin fread

El puntero FILE *
Todas las funciones de entrada/salida estndar usan este puntero para conseguir informacin sobre el fichero abierto. Este puntero no apunta al archivo sino a una estructura que contiene informacin sobre l. Esta estructura incluye entre otras cosas informacin sobre el nombre del archivo, la direccin de la zona de memoria donde se almacena el fichero, tamao del buffer.

Apertura del fichero para lectura: fopen


Ahora es preciso abrir el fichero. Para ello usamos la funcin fopen. Esta funcin tiene el siguiente formato: FILE *fopen(const char *nombre_fichero, const char *modo); En el ejemplo usbamos: fichero = fopen("origen.txt","r");

Miqueas sales

Bachiller industrial y perito en computacin 2013


El nombre de fichero se puede indicar directamente (como en el ejemplo) o usando una variable y se puede abrir de diversas formas. Esto se especifica con el parmetro modo. Los modos posibles son: r w Abre un fichero existente para lectura. Crea un fichero nuevo (o borra su contenido si existe) y lo abre para escritura. a Abre un fichero (si no existe lo crea) para escritura. El puntero se sita al final del archivo, de forma que se puedan aadir datos si borrar los existentes. Se pueden aadir una serie de modificadores siguiendo a los modos anteriores: b t + Abre el fichero en modo binario. Abre el fichero en modo texto. Abre el fichero para lectura y escritura.

Ejemplos de combinaciones: rb+ - Abre el fichero en modo binario para lectura y escritura. w+ - Crea (o lo borra si existe) un fichero para lectura y escritura. rt - Abre un archivo existente en modo texto para lectura.

Comprobacin de fichero abierto


Un aspecto muy importante despus de intentar abrir un fichero es comprobar si realmente est abierto. El sistema no es infalible y pueden producirse fallos: el fichero puede no existir, estar daado o no tener permisos de lectura. Si intentamos realizar operaciones sobre un puntero tipo FILE cuando no se ha conseguido abrir el fichero puede haber problemas.

Miqueas sales

Bachiller industrial y perito en computacin 2013


Si el fichero no se ha abierto, el puntero fichero (puntero a FILE) tendr el valor NULL, si se ha abierto con xito tendr un valor distinto de NULL. Por lo tanto, para comprobar si ha habido errores, nos fijamos en el valor del puntero: if (fichero == NULL) { printf( "No se puede abrir el fichero.\n" ); exit( 1 ); } Si fichero == NULL significa que no se ha podido abrir por alguna causa. Lo ms conveniente es salir del programa. Para salir utilizamos la funcin exit(), donde el argumento 1 indica al sistema operativo que se han producido errores. Esta funcin precisa del archivo de cabecera stdlib.h.

Lectura de caracteres del fichero: getc


Ahora ya podemos empezar a leer el fichero. Para ello podemos utilizar la funcin getc, que lee los caracteres uno a uno. Se puede usar tambin la funcin getc (son equivalentes: la diferencia es que getc est implementada como macro). Adems de estas dos, existen otras funciones como fgets, fread que leen ms de un carcter. El formato de la funcin getc (y de fgetc) es: int getc(FILE *fichero); En este caso lo usamos como: letra = getc( fichero ); Tomamos un carcter de fichero, lo almacenamos en letra y el puntero del fichero se coloca en el siguiente carcter.

10

Miqueas sales

Bachiller industrial y perito en computacin 2013

Comprobacin de fin de fichero: feof


Cuando entramos en el bucle while, la lectura se realiza hasta que se encuentre el final del fichero. La deteccin del final del fichero se puede llevar a cabo de dos formas: Con la funcin feof Comprobando si el valor de letra es EOF (el ltimo carcter de cualquier archivo). En el ejemplo hemos usado la funcin feof. Esta funcin es de la forma: int feof(FILE *fichero); Esta funcin comprueba si se ha llegado al final de fichero, en cuyo caso devuelve un valor distinto de 0. Si no se ha llegado al final de fichero devuelve un cero. Por eso lo usamos del siguiente modo: while ( feof(fichero) == 0 ) o while ( !feof(fichero) ) La segunda forma que comentaba arriba consiste en comprobar si el carcter ledo es el de fin de fichero EOF: while ( letra != EOF ) Sin embargo, cuando trabajamos con ficheros de texto no hay ningn problema, pero si estamos manejando un fichero binario podemos encontrarnos EOF antes del fin de fichero. Por eso es preferible usar feof.

Cierre del fichero: fclose


Una vez realizadas todas las operaciones deseadas sobre el fichero hay que cerrarlo. Es importante no olvidar este paso pues el fichero podra corromperse. Al cerrarlo se vacan

11

Miqueas sales

Bachiller industrial y perito en computacin 2013


los buffers y se guarda el fichero en disco. Un fichero se cierra mediante la funcin fclose. Esta funcin tiene el siguiente formato: FILE *fclose(FILE * stream); Aqu stream es el puntero a FILE devuelto por fopen cuando el archivo se abri. Si todo va bien, devuelve un cero, si hay problemas, devuelve otro valor. Estos problemas se pueden producir si el disco est lleno, por ejempl if (fclose(fichero)!= 0) printf( "Problemas al cerrar el fichero\n" );

Lectura de lneas del fichero: fgets


Esta funcin es muy til para leer lneas completas desde un fichero. Su formato es: char *fgets(char *buffer, int longitud_max, FILE *fichero); Esta funcin lee desde el fichero hasta que encuentra un carcter '\n' o hasta que lee longitud_max-1 caracteres y aade '\0' al final de la cadena (y retiene el carcter '\n'). La cadena leda la almacena en buffer. Si se encuentra EOF antes de leer ningn carcter, o si se produce un error, la funcin devuelve NULL; en caso contrario devuelve la direccin de buffer.
#include <stdio.h> #include <stdlib.h> main(){ FILE *fichero; char texto[100]; fichero = fopen("origen.txt","r"); Miqueas sales

12

Bachiller industrial y perito en computacin 2013


if (fichero == NULL) { printf( "No se puede abrir el fichero.\n" ); exit( 1 ); } printf( "Contenido del fichero:\n" ); fgets(texto,100,fichero); while (feof(fichero) == 0) { printf( "%s",texto ); fgets(texto,100,fichero); } if (fclose(fichero)!=0) printf( "Problemas al cerrar el fichero\n" ); }

La funcin fread
Esta funcin se tratar posteriormente, junto con la funcin fwrite. Ambas permiten guardar y leer, respectivamente, cualquier tipo de dato, incluso estructuras.

13

Miqueas sales

Bachiller industrial y perito en computacin 2013

Conclusiones
Una vez realizadas todas las operaciones deseadas sobre el fichero hay que cerrarlo. Es importante no olvidar este paso pues el fichero podra corromperse. Esta funcin es muy til para leer lneas completas desde un fichero. Su formato es: char *fgets(char *buffer, int longitud_max, FILE *fichero);

14

Miqueas sales

Bachiller industrial y perito en computacin 2013

E-grafa
http://www.geocities.ws/antrahxg/pascal/pmf/archivos/declara.html http://platea.pntic.mec.es/vgonzale/cyr_0204/cyr_01/control/lengua_C/archivos.htm

15

Miqueas sales

También podría gustarte