Está en la página 1de 19

Introduccin al manejo de archivos: Archivos secuenciales

Fundamentos de programacin

Agenda
Conceptos bsicos de archivos. Lectura-escritura de Archivos en orden secuencial.
Carcter por carcter Lnea por lnea

Introduccin a archivos
La nica forma que hemos visto para el almacenamiento de informacin es a travs de Informacin voltil las variables. almacenada en
memoria RAM

int a; int b; printf( Ingrese un numero: scanf( %i , &numero);

);

Cuando el programa termina la informacin almacenada se pierde

Introduccin a archivos
Pero, cmo hago para que la informacin permanezca almacenada por mas tiempo?
Utilizando almacenamiento en memoria secundaria (no volatil) como el disco duro. El almacenamiento en memoria secundaria se la realiza mediante archivos. Un archivo almacena informacin que es conservada aunque el programa haya terminado. Ejemplo: x Puntajes en los juegos como en el Busacaminas x Notas de estudiantes en una hoja electrnica (archivo de Excel) x Voces grabadas usando el computador, etc

Caractersticas de los archivos


Pueden almacenar todo tipo de informacin. Tiene asociado un tipo (Documento de texto, Pelcula, Sonido, etc) En Windows, el tipo de un archivo esta determinado por su extensin (trabajo.doc, Titanic.avi, El aguacate.mp3, etc) y su estructura. Los archivos que no tienen extensin, su estructura debe ser analizada para identificar el tipo de archivo (Linux).

Archivos de texto
Son los archivos ms simples de todos. Considere el archivo shakespeare.txt
Caracteres Lneas Que hay en un nombre? Eso que llamamos una rosa Emanara un olor tan dulce, aun teniendo otro nombre

Dos dimensiones

Conjunto de lneas compuestas de caracteres

Archivos de texto
Caracteres Lneas Que hay en un nombre? Eso que llamamos una rosa Emanara un olor tan dulce, aun teniendo otro nombre

En realidad el archivo de texto no es bidimensional si no ms bien de una sola dimensin:


Una sola secuencia de caracteres que contiene saltos de lnea (\n)

Que hay en un nombre?\nEso que llamamos una rosa\nEmanaria un olor tan dulce, aun teniendo otro nombre

Archivos
Los archivos se parecen mucho a una cadena: Un conjunto de caracteres Desde un programa en C podemos:

Funciones de la librera stdio.h


Tomar la Editar el informacin archivo. del archivo y colocarla en Modificar la informacin variables Eliminar y renombrar archivos

Crear archivos

Trabajar con archivos en C


FILE *archivo;
fopen(nombre,modo)

Shakespeare.txt

Declarar una variable de tipo FILE *(un puntero) Esta se debe asociar con el archivo, usando la funcin fopen Se efectan las operaciones indicadas. Cuando se ha terminado de trabajar con el archivo, este se cierra: fclose

fclose

Trabajar con archivos en C


feof(puntero FILE) Retorna verdadero si se ha alcanzado el indicador EOF (siglas de Fin de Archivo en ingls). fclose(puntero FILE) Cierra un archivo. Se ejecuta automticamente cuando el programa termina. Buena Prctica! Cerrar el archivo explicitamente.

Archivos y flujos de datos


Un flujo de datos se crea al momento de abrir un archivo Canal de comunicacin entre un archivo y el programa Abrir un archivo retorna un puntero tipo FILE Ejemplos de punteros tipo file:
stdin - standard input (teclado) stdout - standard output (pantalla) stderr - standard error (pantalla)

Shakespeare.txt

FLUJO

PROGRAMA

Archivos de Acceso Secuencial


Funciones I/O de lectura-escritura carcter por carcter.
fgetc
x Lee un caracter del archivo x Toma como parmetro un puntero tipo FILE x fgetc(stdin) es equivalente a getchar()

fputc
x Escribe un caracter en el archivo x Parmetros: puntero tipo FILE y el caracter a ser escrito x fputc ('a',stdout) es equivalente a putchar('a')

Ejemplo
Leer el archivo shakesperare.txt, caracter por carcter.

#include <stdio.h>

Puntero al int main() archivo { FILE *archivo; char car; Se abre el archivo = fopen("shakespeare.txt","r"); archivo de solo if(archivo != NULL) lectura r { printf("El archivo fue abierto..\n"); while(!feof(archivo)) { car = fgetc(archivo); Mientras printf("%c",car); pueda seguir leyendo un } Cierro el caracter fclose(archivo); archivo } else printf("Hubo un error al tratar de abrir el archivo"); }

Ejemplo
Leer el archivo shakesperare.txt, caracter por carcter y escriba otro archivo llamado shakespeare2.txt carcter por caracter

Archivos de Acceso Secuencial


Funciones I/O de lectura-escritura lnea por lnea.
char *fgets( char *str, int num, FILE *file);

Lee num-1 caracteres de una lnea de un archivo o hasta encontrar el fin de lnea. Retorna NULL si hubo un error de lectura.
int fputs( const char *str, FILE *file);

Escribe una lnea en el archivo, retorna EOF si hubo un error al realizar dicho proceso.

Ejemplo
Escriba un programa que lea un archivo lnea por lnea y cree otro con el mismo contenido escrito con letras maysculas.

Modos de apertura de archivos


Mode
r w a r+ w+ a+ rb wb

Description Open a file for reading. Create a file for writing. If the file already exists, discard the current contents. Append; open or create a file for writing at end of file. Open a file for update (reading and writing). Create a file for update. If the file already exists, discard the current contents. Append; open or create a file for update; writing is done at the end of the file. Open a file for reading in binary mode. Create a file for writing in binary mode. If the file already exists, discard the current contents. Append; open or create a file for writing at end of file in binary mode. Open a file for update (reading and writing) in binary mode. Create a file for update in binary mode. If the file already exists, discard the current contents. Append; open or create a file for update in binary mode; writing is done at the end of the file. File open modes.

ab rb+ wb+

ab+

Fig. 11.6

En esta clase Ud. aprendi


Identificar los problemas que pueden ser resueltos utilizando archivos. Escribir y leer archivos de manera secuencial, carcter por carcter y lnea por lnea.

También podría gustarte