2012-2 Eric Ulises Garca Cano Castillo - gcc@unica.unam.mx 1
Archivos de texto 1 EN ESTA SECCIN
Archivos de acceso secuencial
Funciones de procesamiento de archivos Modos de apertura de un archivo Archivos de acceso aleatorio Archivos de acceso secuencial Un archivo es una secuencia de lneas donde cada lnea contiene cero o ms caracteres y termina con uno o ms caracteres que indican el fin del archivo.
La longitud mxima de las lneas en C es de 255 caracteres.
Un programa en C ve a los archivos como un flujo secuencial
de bytes. Cuando un archivo se abre, se asocia un flujo con el archivo.
Cada que se ejecuta un programa se abren de manera
automtica tres archivos y sus flujos asociados: la entrada estndar, la salida estndar y el error estndar. 2012-2 Eric Ulises Garca Cano Castillo - gcc@unica.unam.mx 3 Apertura de un archivo El abrir un archivo en C regresa un apuntador a una estructura llamada FILE que contiene la informacin utilizada para procesar dicho archivo.
Existen diferentes funciones para la manipulacin de
2012-2 Eric Ulises Garca Cano Castillo - gcc@unica.unam.mx 4
Modos de apertura Un archivo puede ser abierto de dos modos diferentes, en modo texto o en modo binario.
Para los archivos binarios simplemente se agrega una b al
final. 2012-2 Eric Ulises Garca Cano Castillo - gcc@unica.unam.mx 5 Apertura de un archivo Para abrir un archivo se usa la funcin fopen() que devuelve un apuntador a la estructura FILE. Recibe los siguientes parmetros:
Nombre del archivo
Modo de apertura.
Para cerrar un archivo existe la funcin fclose(). Es necesario
cerrar los archivos una vez que se han terminado de usar.
2012-2 Eric Ulises Garca Cano Castillo - gcc@unica.unam.mx 6
Escritura de un archivo Si un archivo es abierto en modo de escritura, la informacin puede ser escrita en l usando funciones idnticas a aquellas para escribir en pantalla. Los prototipos de esas funciones estn contenidas en stdio.h
2012-2 Eric Ulises Garca Cano Castillo - gcc@unica.unam.mx 7
Lectura de un archivo Leer informacin de un archivo es prcticamente igual a leer informacin desde el teclado. Los prototipos de estas funciones se encuentran en stdio.h.
2012-2 Eric Ulises Garca Cano Castillo - gcc@unica.unam.mx 8
Archivos de acceso aleatorio Los archivos usados hasta ahora son de acceso secuencial, es decir, los caracteres en un archivo son guardados de manera secuencial, uno despus del otro.
Existen funciones que permiten tener acceso aleatorio a un
archivo. rewind(): Reinicia la posicin original al inicio del archivo. fseek(): Permite moverse a cualquier posicin en el archivo. ftell(): Regresa el offset del siguiente carcter que se leer/escribir.
2012-2 Eric Ulises Garca Cano Castillo - gcc@unica.unam.mx 9
Archivos binarios EN ESTA SECCIN 2 Archivos binarios Diferencias entre archivos binarios y archivos de texto Archivos binarios Un archivo binario es justamente un coleccin de bytes.
Existen tres diferencias principales entre los archivos binarios
y los de texto:
Manejo de salto de lnea
Final del archivo Almacenamiento de nmeros
2012-2 Eric Ulises Garca Cano Castillo - gcc@unica.unam.mx 11
Manejo de salto de lnea
En un archivo de texto, un carcter de salto de lnea (nueva
lnea) es transformado en un retorno de carro al principio de la lnea, antes de ser escrito en el disco duro.
Si un archivo es abierto en modo binario, al contrario de los
archivos de texto, la conversin no se llevar a cabo.
2012-2 Eric Ulises Garca Cano Castillo - gcc@unica.unam.mx 12
Final del archivo En los archivos de texto, un carcter especial (ASCII 26) es insertado despus del ltimo carcter para indicar el final del archivo. Al momento de detectar ese carcter, la funcin de lectura regresara la seal EOF al programa.
No existe un carcter especial para marcar el final del
archivo en el modo binario. Se reconoce el fin de un archivo binario por el nmero de caracteres en l.
El modo texto y el modo binario no son compatibles. Si un
archivo fue escrito en modo binario, ser necesario leerlo en modo binario y viceversa. 2012-2 Eric Ulises Garca Cano Castillo - gcc@unica.unam.mx 13 Almacenamiento de nmeros La nica funcin disponible para almacenar nmero en un archivo de disco es fprintf().
El texto y los caracteres ocupan un byte de disco por carcter.
Los nmero son guardados en el archivo ocupando 4 bytes para un entero o un flotante? NO.
Los nmero son guardados como cadenas de caracteres.
1234 4 bytes 1234.56 7 bytes!!!
2012-2 Eric Ulises Garca Cano Castillo - gcc@unica.unam.mx 14
Almacenamiento de nmeros Si un archivo guarda una gran cantidad de nmeros, sera ineficiente usar el modo texto para almacenarlos.
La solucin sera almacenarlos en modo binario y usar las
funciones:
fwrite Escribe datos en un archivo de modo binario.
fread Lee datos de un archivo en modo binario.
Con esto, los nmeros ocuparn en disco la misma cantidad
de bytes que en RAM.
2012-2 Eric Ulises Garca Cano Castillo - gcc@unica.unam.mx 15
Prxima sesin Pilares de la POO Clases, objetos y mtodos Abstraccin y encapsulamiento, Herencia y polimorfismo
2012-2 Eric Ulises Garca Cano Castillo - gcc@unica.unam.mx 16