Anda di halaman 1dari 19

Introduccin al manejo de archivos Archivos secuenciales

Fundamentos de programacin

Agenda
Librera de manejo de cadena de caracteres (string.h) 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 las variables. Informacin
int a; int b; printf(Ingrese un numero: ); scanf(%i, &numero);
voltil almacenada en memoria RAM

Cuando el programa termina la informacin almacenada se pierde

Introduccin a archivos
Pero, como hacer 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: Puntajes en los juegos como en el Busacaminas Notas de estudiantes en una hoja electrnica (archivo de Excel) 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 algunos SO 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 los archivos de testo 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 Eliminar y archivo. renombrar del archivo Modificar la y colocarla archivos informacin en variables

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 el indicador end-of-file (no mas datos para procesar) esta especificado en el archivo 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
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
Lee un caracter del archivo Toma como parmetro un puntero tipo FILE fgetc(stdin) es equivalente a getchar()

fputc
Escribe un caracter en el archivo Parmetros: puntero tipo FILE y el caracter a ser escrito 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 pueda seguir leyendo printf("%c",car); un caracter Cierro el } archivo fclose(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 ab rb+ wb+ ab+

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.

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.

Anda mungkin juga menyukai