Professional Documents
Culture Documents
Unidad 4: Archivos
Operaciones,
Funciones
de
apertura, lectura, escritura y cierre
de archivos
Ing. Margarita Aucancela Msc.
Docente
maucancela@unach.edu.ec
Programacin I
ndice
Introduccin
Definiciones bsicas.
Operaciones Bsicas de manejo de Archivos
Funciones de Escritura y lectura en archivos de
Programacin I
Introduccin
En esta parte, se van a mostrar aquellas funciones que permiten a un
programa comunicarse con los dispositivos de almacenamiento secundario
(discos fijos, discos removibles...) y a la vez, guardar datos en estos
dispositivos de forma permanente para as poder recuperarlos cuando se
Definiciones bsicas
Definiciones bsicas
Un flujo (stream) es una abstraccin que se refiere a un flujo o
corriente de datos que fluyen entre un origen o fuente (productor) y
un destino o sumidero (consumidor). Entre el origen y el destino
debe existir una conexin o canal (<<pipe>>) por la que circulen los
Definiciones bsicas
Hay tres flujos o canales abiertos automticamente:
extern FILE *stdin;
extern FILE *stdout;
extern FILE *stderr;
Estas tres variables se inicializan al comenzar la ejecucin del
programa para admitir secuencias de caracteres, en modo texto. Su
cometido es el siguiente:
stdin: asocia la entrada estndar (teclado) con el programa
stdout: asocia la salida estndar (pantalla) con el programa
stderr: asocia la salida de mensajes de error (pantalla) con el
programa
As cuando se ejecuta printf(Calle Mayor 2); se escribe en stdout, en
pantalla; si se desea leer una variable entera con scanf(d,&x); se
captan los dgitos de la secuencia de entrada stdin.
Programacin I
Definiciones bsicas
Archivo o fichero: Cualquier conjunto de datos almacenado en un
dispositivo de almacenamiento secundario, independientemente de
Programacin I
Definiciones bsicas
Definiciones bsicas
Desde el punto de vista del programador, los archivos hay que verlos
como cadenas de bits (0 o 1) agrupados en bytes consecutivos, de
los cuales, el ltimo, es un carcter especial (EOF) que indica que no
existen ms bytes a partir de l (los bytes pueden representar
nmeros enteros, nmeros reales, caracteres, direcciones de
memoria ...).
NOTA: Los conceptos de archivo y fichero son equivalentes.
10
Definiciones bsicas
Los archivos vienen identificados por un nombre, que a de tener un
mximo de 64 caracteres y una extensin, separada del nombre por
un punto, que es opcional y ha de tener un mximo de 3 caracteres.
Adems, es posible especificar el dispositivo (disco) en el cual est y
C:\PROGRAMACION Informe.pdf
Programacin I
11
Definiciones bsicas
Programacin I
12
Actividad:
Responda: Cul o cules son las
diferencias entre un archivo de texto
y un archivo binario?
Programacin I
13
Operaciones bsicas
Puntero FILE
Los archivos se ubican en dispositivos externos como cintas,
cartuchos, discos, disco compactos, etc. y tienen un nombre y unas
caractersticas. En el programa el archivo tiene un nombre interno
que es un puntero a una estructura predefinida (puntero a archivo).
La siguiente estructura contiene informacin sobre el archivo, tal
14
Operaciones bsicas
Puntero FILE
El identificador del tipo de la estructura es FILE y esta declarada en el
15
Operaciones bsicas
Nota
El detalle de los campos del tipo FILE puede cambiar de un
Programacin I
16
FILE * pf;
FILE * mostrar(FILE *)
Programacin I
17
Operaciones bsicas
Apertura de un archivo
Programacin I
18
Operaciones bsicas
La funcin para abrir un archivo es fopen ( ) y el formato de llamada
es:
fopen(nombre_archivo, modo);
nombre_archivo = cadena: Contiene el identificador externo
del archivo.
19
20
Operaciones bsicas
Modos de apertura de un archivo
Al abrir el archivo fopen() se espera como segundo argumento el
Significado
Abre el archivo para aadir datos al final del mismo. Si el archivo no existe, se
crea.
r+
Abre el archivo para lectura y escritura. Los datos se escriben desde el principio y
el archivo debe existir.
w+
Abre el archivo para lectura y escritura. Los datos se escriben desde el principio y
si el archivo no existe se crea. (si ya existe se pierden los datos)
a+
Abre el archivo para lectura y para aadir datos al final del mismo. Si el archivo no
Programacin I
21
existe, se crea. Si no existeIng.esMargarita
comoAucancela
w+ Msc.
Operaciones bsicas
22
Operaciones bsicas
Ejemplo:
Se dispone de un archivo de texto LICENCIA.EST, se quiere leerlo para
realizar un cierto proceso y escribir datos resultantes en el archivo
binario RESUMEN.REC. Las operaciones de apertura son:
#include <stdio.h>
#include <stdlib.h>
char org[ ]=C:\LICENCIA.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);
}
Programacin I
23
Operaciones bsicas
NULL : Cuando las funciones de biblioteca que devuelven un puntero
(strcpy( ), fopen( ) ...), especifican que no se puede realizar la
operacin, es decir que generalmente hay un error.
Esta es una macro definida en varios archivos de cabecera, entre los
que se encuentran stdio.h y stdlib. h .
EOF: Cuando las funciones de librera de E/S de archivos,
generalmente empiezan por f de file, tienen especificado que son de
24
Operaciones bsicas
NULL : Cuando las funciones de biblioteca que devuelven un puntero
(strcpy( ), fopen( ) ...), especifican que no se puede realizar la
operacin, es decir que generalmente hay un error.
Esta es una macro definida en varios archivos de cabecera, entre los
que se encuentran stdio.h y stdlib. h .
EOF: Cuando las funciones de librera de E/S de archivos,
generalmente empiezan por f de file, tienen especificado que son de
25
Operaciones bsicas
Cierre de archivos
Los archivos trabajan con una memoria intermedia, son con buffer. La
entrada y salida de datos se almacena en ese buffer, volcndose
programa los archivos abiertos hay que cerrarlos para que entre otras
acciones se vuelque el buffer.
Programacin I
26
Operaciones bsicas
Cierre de archivos
Los archivos trabajan con una memoria intermedia, son con buffer. La
entrada y salida de datos se almacena en ese buffer, volcndose
programa los archivos abiertos hay que cerrarlos para que entre otras
acciones se vuelque el buffer.
Programacin I
27
Operaciones bsicas
Cierre de archivos
La funcin fclose (puntero_file) cierra el archivo asociado al
puntero_file, devuelve EOF si ha habido un error al cerrar. El prototipo
de la funcin se encuentra en stdio.h y es:
int fclose(FILE* pf);
Ejemplo
Abrir dos archivos de texto, despus se cierra cada uno de ellos.
#include <stdio.h>
FILE *pfl, *pf2;
pfl = fopen(C:\DATOS.DAT", "a+")
pf2 = fopen("C:\TEMPS.RET","b+")
fclose(pf1);
fclose(pf2);
Programacin I
28
Operaciones bsicas
Programacin I
29
Operaciones bsicas
Respecto a esta tabla habra que hacer algunas consideraciones:
Las lecturas slo podrn hacerse desde el principio del archivo,
mientras que las escrituras podrn hacerse desde el principio
Programacin I
30
31
32
Programacin I
33
Programacin I
34
35
36
Actividad:
Crear un fichero que se llame: frase.dat y almacenar la siguiente
frase:
Programacin I
37
38
Programacin I
39
Programacin I
40
Programacin I
41
Programacin I
42
Programacin I
43
44
Programacin I
45
Programacin I
46
Actividad:
Implementar una solucin al siguiente problema:
Una ferretera desea almacenar los datos de las piezas que comercializa,
de estas se requiere almacenar el nombre de la pieza, el cdigo, el
numero de unidades existentes en bodega y el precio de cada unidad.
Esta informacin requiere ser almacenada en un archivo, al cual se va a
llamar inventario.txt
Programacin I
47
Programacin I
48
del primer byte. A medida que se van leyendo bytes, el valor de dicho
campo se va incrementando.
Programacin I
49
50
(0)
SEEK_CUR
(1)
SEEK_END
(2)
51
Programacin I
52
Archivos binarios
Una forma eficiente de almacenar nmeros en el disco consiste en utilizar
Programacin I
53
Archivos binarios
La funcin utilizada para leer datos de un archivo binario es fread y la
Programacin I
54
Archivos binarios
La especificacin de la funcin fread es la siguiente:
55
Archivos binarios
La especificacin de las funcin fwrite es la siguiente:
56
Archivos binarios
Ejemplo:
#include <stdio.h>
void main ( ) {
FILE *pf;
float v[ ] = {1.43, 4e-5, 32.01,
0.2e1};
........................
pf = fopen(''fichero.dat'', ''wb'');
fwrite(v, sizeof(float), 4, pf);
fclose(pf);
Programacin I
57
Bibliografa
Webgrafas:
https://www.youtube.com/channel/UC7mirgLdHJUoqbaGi_KOr2w
http://decsai.ugr.es/~jfv/ed1/c/cdrom/index.html
Bibliografa:
Programacin en C, Joyanes Luis.
Programacin I
58