Capitulo 4) Archivos. - Departamento de Informática

Anuncio
Universidad Andrés Bello
Departamento de Informática
Archivos
• Definición:
– Forma en la cual un programa se comunica con
el mundo exterior.
Tema 4:
Archivos
Profesor: Sebastián Moreno
2
Apertura de archivos
Archivos
• Según el tipo de datos que almacenarán,
existen 2 tipos de archivo:
– Archivo de texto.
– Archivo binario.
• Establecer un área intermedia para leer / escribir
archivo, declaración y referencia al archivo:
FILE *archivo;
• La estuctura FILE esta definida en stdio.h
• Los pasos para operar con archivos son:
– Abrir el archivo
– Operar con el archivo (lectura, escritura, entre
otros)
– Cerrar archivo
Profesor: Sebastián Moreno
3
Apertura de archivos
4
Apertura y Cerrado de archivos
• Para abrir un archivo se utilizará fopen
archivo = fopen ( nombre_archivo, tipo_archivo);
...donde tipo_archivo:
"r"
Abrir un archivo existente sólo para lectura.
"w"
Abrir un nuevo archivo sólo para escritura. Si ya existe, será
destruido y creado uno nuevo en su lugar.
"a"
Abrir un archivo para añadir. Si no existe, se crea uno nuevo.
"r+"
Abrir un archivo existente para lectura y escritura.
"w+"
Abrir un archivo nuevo para lectura y escritura. Si ya existe, será
destruido y creado uno nuevo en su lugar.
"a+"
Abrir un archivo existente para leer y añadir. Si no existe, se crea
uno nuevo.
Profesor: Sebastián Moreno
Profesor: Sebastián Moreno
• fopen retorna NULL si no puede abrir el archivo
• Una vez abierto el archivo, un puntero se posiciona en
el primer dato.
• Para cerrar un archivo se utiliza fclose
fclose ( archivo );
5
Profesor: Sebastián Moreno
6
1
Operaciones con archivos
1. Texto con formato
• Para la lectura del archivo con formato se utiliza
• Funciones para trabajar con archivos
fscanf( archivo, “tipo_dato”, var1, var2...)#
1. Texto con formato ( fscanf(), fprintf() )
• Para la escritura de un archivo con formato se utiliza
2. Líneas
( fgets(), fputs() )
• Recibe los parámetros habituales de scanf y printf
3. Bloques
( fread(), fwrite() )
• Al invocar la función, se mueve el puntero al siguiente dato.
4. Caracteres
( fgetc(), fputc() )
fprintf( archivo, “tipo_dato”, var1, var2..)
• Ejemplo:
fscanf( archivo, "%d", &x );
fscanf( archivo, "%d %d", &x, &y );
fprintf( archivo, "%d", x );
fprintf( archivo, “un dato extra” );
fprintf( archivo, “iteracion %d\n”, i );
Profesor: Sebastián Moreno
Profesor: Sebastián Moreno
7
2. Por líneas (cadena de caracteres)4
3. Por bloques
• Para la lectura de un archivo por bloques se utiliza
• Para la lectura de una línea o cadena de caracteres:
fgets( cadena , n_caracteres, archivo
)#
Para la escritura de una línea o cadena de caracteres:
fputs( cadena, archivo
)#
fread( bloque_a_leer, tamano_cada_registro, numero_registros,
archivo )#
» Devuelve la cantidad de registros leídos
• Para la escritura de un archivo por bloques se utiliza
• Orientada a leer cadena de caracteres.
• Ejemplo:
fwrite( bloque_a_escribir, tamano_cada_registro, numero_registros,
archivo )#
char linea[20];
fgets(linea, 10, archivo); /* leerá 9 caracteres de archivo */
fputs(linea, otro_archivo); /* escribirá linea en otro_archivo */
char linea2[20] = “Otra linea”;
fputs(linea2, otro_archivo);/* escribirá ”Otra linea” en
otro_archivo */
Profesor: Sebastián Moreno
» Devuelve la cantidad de registros escritos
• Al invocar la función, se mueve el puntero al siguiente
bloque.
• Orientado para trabajar con registros de longitud
constante, por ejemplo, estructuras.
Profesor: Sebastián Moreno
9
Ejemplo
10
4. Por caracteres
• Para leer un carácter desde un archivo:
Tamaño de cada registro
struct ejemplo{
int a, b;
}
struct ejemplo estructura;
fgetc( archivo )#
Para escribir un carácter se utiliza:
fputc( caracter, archivo )#
fread( estructura, sizeof(estructura), 1 , archivo)
Cantidad de registros a leer
fwrite( estructura, sizeof(estructura), 1, archivo2)
Profesor: Sebastián Moreno
8
11
• Al invocar la función, se mueve el puntero al siguiente
caracter.
• Ejemplo:
char caracter;
letra = fgetc( archivo );
printf(”%c”, letra);
fputc( letra, otro_archivo )
Profesor: Sebastián Moreno
12
2
Otras funciones
rewind( archivo )
devuelve 1 si se esta al final del archivo, 0 en caso
contrario.
rewind( archivo )
vuelve al principio del archivo, es decir, sitúa el cursor al
principio del archivo.
Fin Tema 4
fseek( archivo, desplazamiento, origen);
Sitúa el cursor en para leer o escribir en algún lugar
deseado.
ftell( archivo );
Devuelve la posición actual del cursor.
Profesor: Sebastián Moreno
13
3
Descargar