Formatos para prácticas de laboratorio

Documentos relacionados
7. Manejo de Archivos en C.

FILE *nombre_puntero_fichero; fopen(char_nombre_archivo,char_modo_apertura ); MODOS DE APERTURA. Abre un archivo de texto para lectura.

Objetivos de la práctica: - Practicar uso de ficheros: abrir, cerrar y tratamiento de información contenida en el fichero.

Abelardo Pardo. Iria Estévez Ayres. Damaris Fuentes Lorenzo. Pablo Basanta Val. Pedro J. Muñoz Merino. Hugo A. Parada.

ARCHIVOS. 1. Introducción. 2. Definición de archivo. 3. Archivos de acceso secuencial. 4. Gestión de un archivo secuencial de estructuras

En cualquier caso, tampoco es demasiado importante el significado de la "B", si es que lo tiene, lo interesante realmente es el algoritmo.

LEER Y ESCRIBIR ARCHIVOS O FICHEROS EN C. FOPEN, FCLOSE, MODOS DE ACCESO READ, WRITE Y APPEND (CU00536F)

Programación Estructurada

Contenidos. Archivos en C++ Archivos en C++ Introducción

LENGUAJE. Tema 8 Ficheros

Prof. Dr. Paul Bustamante

La ventana de Microsoft Excel

Curso Internet Básico - Aularagon

MANUAL PARA GESTIÓN DE INCIDENCIAS INFORMÁTICAS

Contenido. Capítulo 1. Introducción a lenguaje C 1

ESTÁNDAR DESEMPEÑO BÁSICO Recopila información, la organiza y la procesa de forma adecuada, utilizando herramientas tecnológicas.

3.1. Guardar un libro de trabajo

Correo Electrónico: Webmail: Horde 3.1.1

BASES DE DATOS - Microsoft ACCESS 2007-

MANEJANDO FICHEROS Y CARPETAS

PLANTILLAS DE DOCUMENTOS EN WORD 2007

GVisualPDA Módulo de Almacén

ORGANIZAR LA INFORMACIÓN: EL EXPLORADOR DE WINDOWS

Operación de Microsoft Word

Tema 13: Manejo de archivos en lenguaje C

Formato para Prácticas de Laboratorio

ESCUELA DE ADMINISTRACIÓN

Uso de archivos en C++

Tutorial de Introducción a la Informática Tema 0 Windows. Windows. 1. Objetivos

Tema 8: Tratamiento de datos. Ficheros

Anexo B. Comunicaciones entre mc y PC

15 CORREO WEB CORREO WEB

INSTALACIÓN DE MEDPRO

Prof. Dr. Paul Bustamante

TEMA 2 WINDOWS XP Lección 4 BLOC DE NOTAS

APLICACIONES INFORMÁTICAS de BASE de DATOS

Introduccion al Lenguaje C. Omar Andrés Zapata Mesa Grupo de Fenomenología de Interacciones Fundamentales, (Gfif) Universidad de Antioquia

CASO PRÁCTICO DISTRIBUCIÓN DE COSTES

AGREGAR UN EQUIPO A UNA RED Y COMPARTIR ARCHIVOS CON WINDOWS 7

GESTINLIB GESTIÓN PARA LIBRERÍAS, PAPELERÍAS Y KIOSCOS DESCRIPCIÓN DEL MÓDULO DE KIOSCOS

Backup & Recovery Oracle 9i. Las copias físicas offline, conocidas como Backups en frío, se realizan cuando la Base de Datos está parada.

Computación archivos

Manual Web Alexia Profesor. Índice

MANUAL WINDOWS MOVIE MAKER. Concurso de Gipuzkoa

MANUAL DE PRACTICUM12 PARA CENTROS EDUCATIVOS ÁMBITO MÁSTER

MANUAL COPIAS DE SEGURIDAD

Unidad 7: Procesamiento de archivos en el lenguaje C

Accesibilidad web GUÍA FUNCIONAL

MS ACCESS BÁSICO 6 LOS INFORMES

GUÍA RÁPIDA DE TRABAJOS CON ARCHIVOS.

Paso de Borland Turbo C (bajo DOS) a Anjuta (Linux) 1.

COPIA SEGURIDAD Y RESTAURACIÓN CURSO

Herramientas Informáticas para la Documentación Práctica 1. Introducción al navegador Netscape

Modulo 1 El lenguaje Java

CREAR UNA CUENTA DE CORREO : GMAIL

2_trabajar con calc I

Módulo I - Word. Iniciar Word Finalizar Word Definición de elementos de pantalla Escribir texto en un documento El cursor...

Combinar correspondencia (I)

Año: 2008 Página 1 de 18

MINI MANUAL PARA CREAR FORMULARIOS CON PHP Marzo 2007

SOLUCION EXAMEN junio 2006

Manual de NVU Capítulo 4: Los enlaces

Reservas - Rooming List

TÉCNICAS DE GESTIÓN ADMINISTRATIVA PARA PEQUEÑAS EMPRESAS

Sesión No. 4. Contextualización INFORMÁTICA 1. Nombre: Procesador de Texto

UNIDAD DIDACTICA 6 PERFILES LOCALES Y MÓVILES DE USUARIO

6.1. Conoce la papelera

Ministerio de Educación. Base de datos en la Enseñanza. Open Office. Módulo 5: Report Builder

GUIA COMPLEMENTARIA PARA EL USUARIO DE AUTOAUDIT. Versión N 02 Fecha: 2011-Febrero Apartado: Archivos Anexos ARCHIVOS ANEXOS

En esta unidad añadiremos información sobre EXT3 y trabajaremos con aspectos visibles que nos proporcionan estos sistemas de archivos.

Tablas dinámicas. Tablas dinámicas

CONCEPTOS BASICOS. Febrero 2003 Página - 1/10

Preliminares. Tipos de variables y Expresiones

Adaptación al NPGC. Introducción. NPGC.doc. Qué cambios hay en el NPGC? Telf.: Fax.:

5. Composer: Publicar sus páginas en la web

A continuación se describen cuáles son los elementos principales de las tablas, cómo crear una y cómo modificarla.

WINDOWS : COPIAS DE SEGURIDAD

Recuva funciona muy bien, siempre y cuando se cumplan dos factores fundamentales que son:

COMISIÓN NACIONAL PARA EL AHORRO DE ENERGÍA

VJALQUILER VJALQUILER

CIERRE EJERCICIO CON BECONTA

APUNTES DE WINDOWS. Windows y sus Elementos INSTITUTO DE CAPACITACIÓN PROFESIONAL. Elementos de Windows

Este botón situado en la barra de título de la ventana de la aplicación, nos da acceso a un menú mediante el cual podemos, entre otras opciones:

Seminario de Informática

UNIVERSIDAD TÉCNICA DEL NORTE FACULTAD DE INGENIERÍA EN CIENCIAS APLICADAS ESCUELA DE INGENIERÍA EN SISTEMAS COMPUTACIONALES

CONSULTAS CON SQL. 3. Hacer clic sobre el botón Nuevo de la ventana de la base de datos. Aparecerá el siguiente cuadro de diálogo.

HERRAMIENTAS DE ACCESS ACCESS Manual de Referencia para usuarios. Salomón Ccance CCANCE WEBSITE

DESCARGA DE CARPETAS DE MENSAJES DE CORREO DESDE EL WEBMAIL A PC S LOCALES

MANUAL DEL PROGRAMA DE ASESORAMIENTO (Asesores) Navegador y limpiar caché/cookies...2 Acceso al programa de Asesoramiento... 7

GENERACIÓN DE ANTICIPOS DE CRÉDITO

Ejercicios - Persistencia en Android: ficheros y SQLite

OBJETIVOS. Explicar el manejo de archivos de texto. Explicar el manejo de archivos binarios. Desarrollar programas que usen archivos.

Instalación de dos Sistemas Operativos en un mismo Computador

Programación. Ejercicios Tema 4 Estructuras de Control Repetitivas

SOLUCIÓN CASO GESTIÓN DE PERSONAL I

GENERACIÓN DE TRANSFERENCIAS

A25. Informática aplicada a la gestión Curso 2005/2006 Word Tema 3. Formato de sección.

GESTIÓN DOCUMENTAL PARA EL SISTEMA DE CALIDAD

Transcripción:

Fecha de efectividad: CARRERA PLAN DE ESTUDIO CLAVE ASIGNATURA NOMBRE DE LA ASIGNATURA LSC 2003-1 5221 Lenguaje de Programación Estructurada PRÁCTICA No. 8 LABORATORIO DE NOMBRE DE LA PRÁCTICA Licenciado en Sistemas Computacionales DURACIÓN (HORA) Archivos de Texto y Binarios 4 1. INTRODUCCIÓN El almacenamiento de datos en variables y en arreglos es temporal, al terminar un programa todos los datos se pierden, para la conservacion permanente de grandes cantidades de datos se utilizan los archivos en dispositivos de almacenamiento secundario, especialmente en dispositivos de almacenamiento en disco. 2. OBJETIVO (COMPETENCIA) El alumno aplicará el uso de archivos para el manejo de información en un dispositivo secundario 3. FUNDAMENTO Para entrar en materia vamos a analizar un ejemplo que lee un archivo de texto y lo muestra en la pantalla: FILE *archivo; char letra; archivo = fopen("origen.txt","r"); if (archivo==null) printf( "No se puede abrir el archivo." ); exit( 1 ); printf( "Contenido del archivo:" ); letra=getc(archivo); while (feof(archivo)==0) Formuló L.I. Hilda Olivia Albarrán Padilla Ing. Eva Herrera Ramírez Ing. G. Angélica Flores Rivera Maestro Revisó L.S.C. Mónica Cristina Lam Mora Coordinador de Programa Educativo Página 1 de 8 Aprobó Gestión de Calidad Autorizó M.C. Miguel Ángel Martínez Romero Director de la Facultad

printf( "%c",letra ); letra=getc(archivo); if (fclose(archivo)!=0) printf( "Problemas al cerrar el archivo" ); EL PUNTERO FILE Todas las funciones de estrada/salida estándar usan este puntero para conseguir información sobre el archivo abierto. Este puntero no apunta al archivo sino a una estructura que contiene información sobre él. Esta estructura incluye entre otras cosas informacián sobre el nombre del archivo, la dirección de la zona de memoria donde se almacena el archivo, tamaño del buffer. ABRIR EL ARCHIVO.-Ahora vamos abrir el archivo. Para ello usamos la función fopen. FILE *fopen(const char *nombre_archivo, const char *modo); El nombre de archivo se puede indicar directamente (como en el ejemplo) o usando una variable. El archivo se puede abrir de diversas formas. Esto se especifica con el parámetro modo. Los modos posibles son: r Abre un archivo existente para lectura. w Crea un archivo nuevo (o borra su contenido si existe) y lo abre para escritura. a Abre un archivo (si no existe lo crea) para escritura. El puntero se sitúa al final del archivo, de forma que se puedan agregar datos si borrar los existentes. Se pueden añadir una serie de modificadores siguiendo a los modos anteriores: b Abre el archivo en modo binario. t Abre el archivo en modo texto. + Abre el archivo para lectura y escritura. Ejemplos de combinaciones: rb+ Abre el archivo en modo binario para lectura y escritura. w+ Crea (o lo borra si existe) un archivo para lectura y escritura. rt Abre un archivo existente en modo texto para lectura. Una cosa muy importante después de abrir un archivo es comprobar si realmente está abierto. El sistema no es infalible y pueden producirse fallos: el archivo puede no existir, estar danado o no tener permisos de lectura. Si intentamos realizar operaciones sobre un puntero tipo FILE cuando no se ha conseguido abrir el archivo puede haber problemas. Por eso es importante comprobar si se ha abierto con éxito. Si el archivo no se ha abierto el puntero archivo (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 (archivo==null) printf( "No se puede abrir el archivo." ); exit( 1 ); <\blockquote> Si archivo==null significa que no se ha podido abrir por algun error. Lectura del archivo getc lee los caracteres uno a uno. fgets lee líneas completas desde un archivo Cuando entramos en el ciclo while, la lectura se realiza hasta que se encuentre el final del archivo. Página 2 de 8

Para detectar el final del archivo se pueden usar dos formas: con la función feof() comprobando si el valor de letra es EOF. En el ejemplo hemos usado la función feof. Esta función comprueba si se ha llegado al final de archivo en cuyo caso devuelve un valor distinto de 0. Si no se ha llegado al final de archivo devuelve un cero. Por eso lo usamos.cuando trabajamos con archivos de texto no hay ningún problema, pero si estamos manejando un archivo binario podemos encontrarnos EOF antes del fin de archivo. Por eso es mejor usar feof. Una vez realizadas todas las operaciones deseadas sobre el archivo hay que cerrarlo. Es importante no olvidar este paso pues el archivo podría corromperse. Al cerrarlo se vacian los buffers y se guarda el archivo en disco. Un archivo se cierra mediante la función fclose(fichero). Si todo va bien fclose devuelve un cero, si hay problemas devuelve otro valor. Estos problemas se pueden producir si el disco esta lleno. int main( ) FILE *fichero; char texto[100]; fichero=fopen("origen.txt","r"); if (fichero==null) printf( "No se puede abrir el archivo." ); exit( 1 ); printf( "Contenido del archivo:" ); fgets(texto,100,fichero); while (feof(fichero)==0) printf( "%s",texto ); fgets(texto,100,fichero); if (fclose(fichero)!=0) printf( "Problemas al cerrar el archivo" ); ESCRITURA DE UN ARCHIVO El siguiente paso, como antes, es abrir el archivo usando fopen. La diferencia es que ahora tenemos que abrirlo para escritura. Usamos el modo: w (crea el archivo o lo vacia si existe) porque queremos crear un archivo. Recordemos que despues de abrir un archivo hay que comprobar si la operacion se ha realizado con exito. Funciones de escritura: putc escribe un caracter en el archivo fputs escribe una cadena en el archivo EJEMPLO: FILE *origen, *destino; char letra; origen=fopen("origen.txt","r"); destino=fopen("destino.txt","w"); if (origen==null destino==null) Página 3 de 8

printf( "Problemas con los archivos." ); exit( 1 ); letra=getc(origen); while (feof(origen)==0) putc(letra,destino); printf( "%c",letra ); letra=getc(origen); if (fclose(origen)!=0) printf( "Problemas al cerrar el archivo origen.txt" ); if (fclose(destino)!=0) printf( "Problemas al cerrar el archivo destino.txt" ); Nunca debemos olvidar al trabajar con archivos: cerrarlos. Debemos cerrar tanto los archivos que leemos como aquellos sobre los que escribimos. Las funciones que hemos visto hasta ahora (getc, putc, fgets, fputs) son adecuadas para trabajar con caracteres (1 byte) y cadenas. Pero, que sucede cuando queremos trabajar con otros tipos de datos? Supongamos que queremos almacenar variables de tipo int en un archivo.como las funciones vistas hasta ahora solo pueden operar con cadenas deberiamos convertir los valores a cadenas (con la función itoa). Para recuperar luego estos valores deberiamos leerlos como cadenas y pasarlos a enteros (atoi). Vamos a utilizar las funciones fread y fwrite. Estas funciones nos permiten tratar con datos de cualquier tipo, incluso con estructuras. fwrite Nos permite escribir en un archivo. Esta funcion tiene el siguiente formato: size_t fwrite(void *buffer, size_t tamano, size_t numero, FILE *pfichero); buffer - variable que contiene los datos que vamos a escribir en el archivo. tamaño - el tamaño del tipo de dato a escribir. Puede ser un int, un float, una estructura,... Para conocer su tamaño usamos el operador sizeof. número - el numero de datos a escribir. pfichero - El puntero al archivo sobre el que trabajamos. Para que quede mas claro examinemos el siguiente ejemplo: Programa de una agenda personal que guarda el nombre, apellido y teléfono de cada persona. struct char nombre[20]; char apellido[20]; char telefono[15]; registro; FILE *fichero; fichero = fopen( "nombres.txt", "a" ); do printf( "Nombre: " ); fflush(stdout); gets(registro.nombre); if (strcmp(registro.nombre,"")) Página 4 de 8

printf( "Apellido: " ); fflush(stdout); gets(registro.apellido); printf( "Teléfono: " ); fflush(stdout); gets(registro.telefono); fwrite( istro, sizeof(registro), 1, fichero ); while (strcmp(registro.nombre,"")!=0); fclose( fichero ); NOTA: El ciclo termina cuando el nombre se deja en blanco. Este programa guarda los datos personales mediante fwrite usando la estructura registro. Abrimos el archivo en modo a (append, añadir), para que los datos que introducimos se añadan al final del archivo. Una vez abierto abrimos estramos en un bucle do-while mediante el cual introducimos los datos. Los datos se van almacenando en la variable registro (que es una estructura). Una vez tenemos todos los datos de la persona los metemos en el archivo con fwrite: fwrite( istro, sizeof(registro), 1, fichero ); registro - es la variable (en este caso una estructura) que contiene la informacion a meter al archivo. sizeof(registro) - lo utillizamos para saber cuál es el número de bytes que vamos a guardar, el tamaño en bytes que ocupa la estructura. 1 - indica que sólo vamos a guardar un elemento. Cada vez que se recorre el bucle guardamos sólo un elemento. fichero - el puntero FILE al archivo donde vamos a escribir. fread La funcion fread se utiliza para sacar información de un archivo. Su formato es: size_t fread(void *buffer, size_t tamano, size_t numero, FILE *pfichero); Siendo buffer la variable donde se van a escribir los datos leídos del archivo pfichero. El valor que devuelve la funcion indica el número de elementos de tamaño tamano que ha conseguido leer. Nosotros podemos pedirle a fread que lea 10 elementos (numero=10), pero si en el archivo sólo hay 6 elementos fread devolverá el número 6. Siguiendo con el ejemplo anterior ahora vamos a leer los datos que habíamos introducido en nombres.txt. include#<stdio.h> struct char nombre[20]; char apellido[20]; char telefono[15]; registro; FILE *fichero; fichero = fopen( "nombres.txt", "r" ); while (!feof(fichero)) if (fread( registro, sizeof(registro), 1, fichero )) printf("nombre: %s", registro.nombre ); printf("apellido: %s", registro.apellido); printf("teléfono: %s", registro.telefono); fclose( fichero ); La función fread lee un registro (numero=1) del tamaño de la estructura registro. Página 5 de 8

Si realmente ha conseguido leer un registro la función devolverá un 1, en cuyo caso la condición del if será verdadera y se imprimirá el registro en la pantalla. En caso de que no queden más registros en el archivo, fread devolverá 0 y no se mostrará nada en la pantalla. fseek y ftell fseek La función fseek nos permite situarnos en la posición que queramos de un archivo abierto. Cuando leemos un archivo hay un puntero que indica en qué lugar del archivo nos encontramos. Cada vez que leemos datos del archivo este puntero se desplaza. Con la función fseek podemos situar este puntero en el lugar que deseado. El formato de fseek es el siguiente: int fseek(file *pfichero, long desplazamiento, int modo); Como siempre pfichero es un puntero de tipo FILE que apunta al archivo con el que queremos trabajar. desplazamiento son las posiciones (o bytes) que queremos desplazar el puntero. Este desplazamiento puede ser de tres tipos dependiendo del valor de modo: SEEK_SET El puntero se desplaza desde el principio del archivo. SEEK_CUR El puntero se desplaza desde la posición actual del archivo. SEEK_END El puntero se desplaza desde el final del archivo. Si se produce algún error al intentar posicionar el puntero, la funcion devuelve un valor distinto de 0. Si todo ha ido bien el valor devuelto es un 0. En el siguiente ejemplo se muestra el funcionamiento de fseek. Se trata de un programa que lee la letra que hay en la posición que especifica el usuario. FILE *fichero; long posicion; int resultado; fichero = fopen( "origen.txt", "r" ); printf( " Qué posición quieres leer? " ); fflush(stdout); scanf( "%D", &posicion ); resultado = fseek( fichero, posicion, SEEK_SET ); if (!resultado) printf( "En la posición %D está la letra %c.", posicion, getc(fichero) ); else printf( "Problemas posicionando el cursor." ); fclose( fichero ); ftell Esta función es complementaria a fseek, devuelve la posición actual dentro del archivo. Su formato es el siguiente: long ftell(file *pfichero); El valor que nos da ftell puede ser usado por fseek para volver a la posición actual. fprintf y fscanf Estas dos funciones trabajan igual que sus equivalentes printf y scanf. La única diferencia es que podemos especificar el archivo sobre el que operar (si se desea puede ser la pantalla para fprintf o el teclado para fscanf). Los formatos de estas dos funciones son: int fprintf(file *pfichero, const char *formato,...); int fscanf(file *pfichero, const char *formato,...); Página 6 de 8

4. PROCEDIMIENTO (DESCRIPCIÓN) A) EQUIPO NECESARIO MATERIAL DE APOYO Computadora con Linux instalado Práctica impresa B) DESARROLLO DE LA PRÁCTICA El desarrollo de esta práctica será la elaboración de los ejercicios realizados en la práctica no. 7 ( referente a arreglos de estructuras), es decir, que la práctica que le haya correspondido se hará con archivos binarios. Página 7 de 8

C) CÁLCULOS Y REPORTE El maestro evaluará de manera individual sobre el funcionamiento de archivos. 5. RESULTADOS Y CONCLUSIONES Al finalizar esta practica el alumno podrá utilizar Archivos de manera eficiente 6. ANEXOS Referencia a archivos 7. REFERENCIAS Página 8 de 8