Professional Documents
Culture Documents
Archivos en C
Fernando Mancilla
Programacin o Casa Central, UTFSM
Nov 2007
Fernando Mancilla
Archivos en C
Agenda
Agenda
Introduccin o Denicin o
Fernando Mancilla
Archivos en C
Agenda
Agenda
Introduccin o Denicin o
Fernando Mancilla
Archivos en C
Denicin o
Denicin o
Un archivo sirve para almacenar informacin de modo o permanente. Puede ser abierto por un programa, ser modicado, y luego ser almacenado con estos cambios. Existe un conjunto de funciones de biblioteca para manejar y procesar archivos. Estas se encuentran en stdio.h Archivos secuenciales:
Archivos con caracteres consecutivos (tipo texto). Archivo organizado en bloques contiguos (tipo binario, array / struct).
Fernando Mancilla
Archivos en C
Fernando Mancilla
Archivos en C
Abrir Archivo
Para declarar un archivo se utiliza la estructura FILE, el archivo es un puntero a esta estructura: FILE *nombre_logico_archivo; Nota: Un archivo debe poseer un nombre lgico donde luego o ser referenciado a su nombre f a sico.
Para abrir un archivo se utiliza la funcin fopen(), la cual o retorna un puntero tipo FILE. Su prototipo es: FILE *fopen("nombre_fisico","modo_apertura") Nota: Una vez abierto el archivo, un puntero se posiciona en el primer dato.
Fernando Mancilla
Archivos en C
Para referenciar entonces el nombre lgico del archivo a su nombre o f sico, el retorno de la funcin fopen() se asigna al nombre lgico o o del archivo: Ejemplo: FILE *mi_archivo; mi_archivo = fopen("archivo.txt","modo_apertura"); El modo apertura indica para qu se abre el archivo: si escritura, e lectura, etc. Esto se dene en la siguiente diapositiva.
Fernando Mancilla
Archivos en C
Modo r w a r+ w+ a+
Signicado Abrir un archivo texto para lectura Crear un archivo texto para escritura Abrir o Crear un archivo texto para agregar al nal Abrir un archivo texto para lectura/escritura Crear un archivo texto para lectura/escritura Abrir o Crear un archivo texto para lectura/escritura
Nota: Crear signica que si existe el archivo lo borra y crea uno nuevo.
Fernando Mancilla
Archivos en C
Signicado Abrir un archivo binario para lectura Crear un archivo binario para escritura Abrir o Crear un archivo binario para agregar al nal Abrir un archivo binario para lectura/escritura Crear un archivo binario para lectura/escritura Abrir o Crear un archivo binario para lectura/escritura
Nota: Crear signica que si existe el archivo lo borra y crea uno nuevo.
Fernando Mancilla
Archivos en C
Error de apertura
La funcin fopen retorna NULL si hubo error al abrir el archivo: o Ejemplo: FILE *mi_archivo; mi_archivo = fopen("archivo.txt","r"); if (archivo == NULL) printf("Archivo no existe\n"); /*o tambien*/ if ((mi_archivo = fopen("archivo.txt","r")) == NULL) printf("Archivo no existe\n");
Fernando Mancilla
Archivos en C
Fin de Archivo
Fernando Mancilla
Archivos en C
Fernando Mancilla
Archivos en C
fscanf() lectura de texto con formato. Prototipo: int fscanf( archivo , "formato" , &var1, &var2, ...); Ejemplo 1: fscanf(mi_archivo,"%d",&x);
Fernando Mancilla
Archivos en C
fprintf() escritura de texto con formato. Prototipo: int fprintf( archivo , "formato" , var1, var2, ...); Ejemplo 1: fprintf(mi_archivo,"%d",x);
Fernando Mancilla
Archivos en C
fgets() lectura de cadena de caracteres. Prototipo: char *fgets( var_cadena , n_caracteres , archivo); Slo lee n-1 caracteres. o Ejemplo: char linea[10]; fgets(linea,10,mi_archivo); //leera 9 caracteres de mi_archivo
Fernando Mancilla
Archivos en C
fputs() escritura de cadenas de caracteres. Prototipo: int fputs( var_cadena, archivo); Ejemplo: char linea[10]; fputs(linea,mi_archivo); //escribira linea en mi_archivo
Fernando Mancilla
Archivos en C
Fernando Mancilla
Archivos en C
putc() escritura de cadenas de caracteres. Prototipo: int putc( var_caracter, archivo); Ejemplo: char caracter; ... putc(caracter,mi_archivo);
Fernando Mancilla
Archivos en C
Se puede apreciar que para obtener el tamao del registro se ha n utilizado la funcin sizeof(). o
Fernando Mancilla Archivos en C
Ejemplo 2: struct barco{ int codigo, tipo, peso; } bin; ... while(!feof(mi_archivo)) { fread(&bin, sizeof(bin),1,mi_archivo); printf("%d %d %d\n",bin.codigo,bin.tipo,bin.peso); }
Fernando Mancilla
Archivos en C
Ejemplo 1: struct automovil{ char marca[20], modelo[20]; float precio; } auto1; ... fwrite(&auto1, sizeof(auto1),1,mi_archivo);
Fernando Mancilla
Archivos en C
Fernando Mancilla
Archivos en C
Otras funciones
rewind(archivo): sita el cursor al principio del archivo. u fseek( archivo, desplazamiento, origen): sita el cursor para u leer o escribir en algn lugar deseado. u
desplazamiento: avanzar un nmero de bytes desde el origen. u origen: desde donde se ubica el cursor.
Se coloca 0 para indicar desde comienzo del archivo. Se coloca 1 para indicar desde posicin actual. o Se coloca 2 para indicar desde comienzo del archivo.
Se puede utilizar fseek para ambos tipos de archivos, pero es ms recomendable para archivos binarios. a ftell(archivo): Devuelve la posicin actual del cursor. o
Fernando Mancilla
Archivos en C
Cerrar Archivo
Fernando Mancilla
Archivos en C
Nuestra mayor gloria no est en no haber ca nunca, a do sino en levantarnos cada vez que caemos.
.:Oliver Goldsmith:.
Fernando Mancilla
Archivos en C