Está en la página 1de 16

Programacin Avanzada y Mtodos Numricos

Previo 3: Procesamiento de archivos


Archivos de texto
Archivos binarios

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


archivos:
fgetc
fgets
fputs
fscanf
fprintf
fread
fwrite

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

También podría gustarte