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
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
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
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:
Crear archivos
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
Shakespeare.txt
FLUJO
PROGRAMA
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
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.
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