You are on page 1of 17

Introducción a la Programación con C.

ARCHIVOS
(Conceptos generales)

1
ACHIVO.
Colección de datos de diferentes tipos almacenados en
medios o dispositivos externos (discos (“duros”, DVD, CD, etc.),
USB, etc.)

Ventajas de este tipo de datos.


a)Se conservan los datos al concluir la ejecución de un programa,
a diferencia de lo que sucede con los datos almacenados en
variables registrados en la memoria principal.
b)Es posible reutilizar los conjuntos de datos en o por diferentes
programas .
Reutilizar los datos = Recuperar los últimos datos
almacenados, modificarlos, eliminarlos y enriquecerlos.

Los archivos nos permiten almacenar datos de modo permanente


y acceder y modificar la misma cuando sea necesario.

07/12/21 2
Un archivo puede verse como una secuencia de elementos de una estructura
Ejemplo. La creación de una discoteca formada por una colección de discos con
los siguientes datos para cada disco:
• Clave
• Titulo
• Intérprete
• Precio
• Fecha de compra.

Clave Titulo Intérprete Precio F-


Registros:
compra.
01
D01 T1 I1 Pr1 Fc1
02
Archivo:
D02 T2 I2 Pr2 Fc2 03
“C:Discoteca.dat” D03 T3 I3 Pr3 Fc3
nn
Dnn Tn de Archivo
Fin In Prn Fcn
07/12/21 EOF 3
Clasificación de los archivos.

Por la “organización del archivo” o forma en que es posible


acceder a los registros.

SECUENCIALES

Se debe recorrer el archivo registro por registro.


(Para leer el 7º. Registro, es necesario leer los 6
primeros registros).

DIRECTOS

Se puede accesar el registro deseado directamente

07/12/21 4
Operaciones básicas (instrucciones) que implica el proceso de los archivos.

fputc ( ) Escribe un carácter en el archivo.


fputs ( ) Escribe una cadena de caracteres en el
Archivos archivo.
SECUENCIALES fprintf ( ) Escribe variables de cualquier tipo de dato,
mediante los descriptores de campo (%s, %f,
%d, etc.) utilizados en fprint.
ESCRITURA fwrite ( ) Escribe bloques de datos de cualquier tipo en
un archivo binario.
Archivos de fseek ( ) Permite ubicar un registro n directamente.
Acceso DIRECTO fwrite ( )

fgetc ( ) Lee el siguiente carácter del archivo.


fgets ( ) Lee una cadena desde archivo.
Archivos fscanf ( ) Lee de cualquier tipo de dato, mediante
SECUENCIALES los descriptores de campo (%s, %f, %d,
etc.) utilizados en fprint.
LECTURA fread ( ) Lee bloques se datos de un archivo binario
Archivos de
Acceso DIRECTO fseek ( ) Permite ubicar un registro n directamente.
fread ( )
Aspectos adicionales que se deben considerar al procesar
archivos.
Es importante tomar en cuenta que ahora los datos se encuentran en un
medio o dispositivo externo al CPU
Debe establecerse una conexión entre el programa y el archivo,
para lo cual :
1º.) Se crea un área en memoria principal (buffer) asociada a
cada archivo, que sirve como intermediario entre el
programa y el archivo:
o Para registrar datos en el archivo, primero se depositan
en el buffer y luego pasan al archivo.
o Al leer datos del archivo, primero se depositan en el
buffer y de ahí pasan a las variables utilizadas por el
programa.

Esto se realiza mediante la definición de la estructura:


FILE *ptvar;
Donde:
 FILE es un tipo especial de estructura que se encuentra definida
en la biblioteca stdio.h y,
 *ptvar es un apuntador (dirección de memoria) donde inicia el área
intermedia o buffer asignada al archivo.
07/12/21 11
Aspectos adicionales que se deben considerar al procesar
archivos.

Los datos se encuentran en un medio o dispositivo externo al CPU


Una vez creado el buffer se debe:
2º.) Asociar el buffer creado con el nombre del archivo y especificar la forma o
modalidad en que se desea utilizar el archivo.

Esto se realiza mediante la función:


ptvar = fopen (nombre-del-archivo, tipo-archivo)
Donde:
Nombre-del-archivo: Cadena de caracteres que representa el nombre completo
del archivo (“C:discos.dat”). Seguir las reglas del sistema operativo para asignar
nombres a los archivos.
Tipo-archivo: Cadena que especifica la forma en que el archivo será utilizado:
“r” Abrir un archivo existente sólo para lectura,
“w” Abrir un nuevo archivo sólo para escritura. Si ya existe, se destruye y crea otro,
“a” Abrir un archivo existente para agregar información nueva al final del archivo.
“r+” Abrir un archivo existente tanto para lectura como para escritura,
“w+” Abrir un archivo nuevo para lectura y escritura. Si existe se destruye,
“a+” Abrir un archivo existente para leer y añadir. Si no existe, se crea uno nuevo.

07/12/21 fopen ( ) devuelve un valor NULL si no puede abrir el archivo.


12
Aspectos adicionales que se deben considerar al procesar
archivos.

Después de utilizar el archivo, se debe cerrar mediante la función:

fclose (ptvar);

Otros elementos (funciones) para el proceso de archivos:


EOF Indica fin del archivo,
fflush (fpvar) Vacía o limpia el buffer asociado al archivo,
rewind ( ) Sitúa el apuntador del archivo al inicio de éste.

07/12/21 13
Proceso de archivos.
RESUMEN

Para procesar o trabaja con un archivo se deben realizar las “r”


siguientes operaciones: “w”
“a”
Operación Instrucción que la realiza “r+”
“w+”
Crear el buffer asociado al archivo FILE *ptvar;
“a+”
Abrir el archivo ptvar = fopen ( nombre-archivo, tipo de uso) ;
if (ptvar == NULL)
printf (“ ERROR: no fue posible abrir el archivo n”);
else
Verificar si la apertura tuvo éxito {
intrucciones sobre el archivo;
fclose (ftvar);
}
Realizar las operaciones de escritura fputc ( ) fputs ( ) fprintf ( ) fwrite ( )
y/o lectura, según lo requiera el fseek ( ) fwrite ( )
problema, el tipo de archivo y la fgetc ( ) fgets ( ) fscanf ( ) fread ( )
forma de uso fseek ( ) fread ( )
07/12/21 14
Cerrar el archivo, al terminar el fclose (ptvar);
proceso
Ejemplos sobre el proceso de archivos:

Ejemplo 13.4 [JOYANES]


En este ejemplo se abre el archivo de texto JARDINES.DAT para
escribir en él los datos de un programa.

En la misma línea en que se ejecuta fopen ( ) se comprueba que la


operación ha sido correcta, en caso contrario termina la ejecución.

# include <stdio.h>
#include <stdlib.h>
FILE *ff;
char archivo[ ] = "C:JARDINES.DAT ";
if ((ff = fopen(archivo, "w"))==NULL)
{
puts ("Error al abrir el archivo pdrd escribir . " ) ;
e x i t (-1) ;
}
07/12/21 15
Ejemplos sobre el proceso de archivos:

Ejemplo 13.5
Se dispone archivo de texto LlCENClA.EST, se quiere leerlo para
realizar un cierto proceso y escribir datos resultantes en al archivo
binario RESUMEN.REC. Las operaciones de apertura son:
#include <stdio.h>
#include <stdlib.h>
FILE *pf1, *pf2 ;
char org[ ] = "C:\LlCENCIA.EST'';
char dst[ ] = “C:\RESUMEN.REC'" ;
pf1 = fopen(org, "rt") ;
pf2 = fopen(dst,"wb");
if (pf1 == NULL || pf2 == NULL)
{
puts ( "Error al abrir los archivos. ) ;
exit (1) ;
}
07/12/21 16
07/12/21 17
07/12/21 18
07/12/21 19
07/12/21 20
Archivos.
Referencias:
[JOYANES2005] Programación en C, Luis Joyanes Aguilar, Mc Graw
Hill, Madrid 2005, Capítulo 15, páginas 498 – 527.

[GOTTFRIED2005] Programación en C, Byron Gottfried, , Mc Graw


Hill, Madrid 2005, Capítulo 12, páginas 489 – 518.

07/12/21 21
Introducción a la Programación con C.

ARCHIVOS
(Conceptos generales)

07/12/21 22

You might also like