Está en la página 1de 19

v.

Algoritmos y
Estructuras de Datos
E/S: Archivos - parte 1

Martn Agero
2017

1
Algoritmos y Estructuras de Datos
Agenda
Archivos de texto
Operaciones simples
Patrones algortimos

2
Algoritmos y Estructuras de Datos

Archivos

3
Algoritmos y Estructuras de Datos
Archivos

Cada vez que se ejecuta un programa, el sistema operativo es responsable de


abrir 3 flujos a travs de archivos y proveer punteros a ellos: stdin (estndar de
entrada), stdout (estndar de salida), stderr (estndar de error).

Habitualmente stdin est conectado al teclado, stdout y stderr a la pantalla. stdin y


stdout pueden ser redirigidos a archivos o tuberas (pipes).

4
Algoritmos y Estructuras de Datos
Archivos

Los archivos son estructuras de datos con almacenamiento fsico en disco que
persisten ms all del tiempo de ejecucin de una aplicacin. Una caracterstica
importante es que su procesamiento es lento.

Segn el tipo de dato se pueden diferenciar entre archivos de texto y binarios.

5
Algoritmos y Estructuras de Datos
Archivos

De texto
Conjunto de lneas de texto
Compuestas por un conjunto de caracteres
Finaliza cada lnea con una marca de fin de lnea
Finaliza con una marca de fin de la estructura
Fcilmente transportables
Binarios
Secuencia de bytes
Ms compactos
Menos transportables (o portables)
6
Algoritmos y Estructuras de Datos
Archivos

Antes de leer o escribir un archivo, ste tiene que ser abierto mediante la funcin
fopen que la encargada de "negociar" con el Sistema Operativo (SO) y retorna un
puntero de tipo FILE que puede ser utilizado para leer o escribir un archivo (*).
Puntero de tipo
Tipo de dato
FILE de nombre de
ARCHIVO. Modo de apertura.
identificador fp
Algunas opciones
son r lectura, w
escritura y a para
fopen retorna Nombre del aadir.
una estructura archivo a
de tipo FILE abrir.

(*) recursos que son parte de la biblioteca stdio.h


7
Algoritmos y Estructuras de Datos
Archivos

Opciones para el atributo modo de apertura:

8
Algoritmos y Estructuras de Datos
Archivos
Abre el archivo Alumnos para
Ejemplos:
escritura (si no existe, lo crea) y
FILE * F; especifica que es binario.
F = fopen(Alumnos, wb+);

if ((F = fopen(Alumnos, wb+)) == NULL) {


error(1); Controla que la apertura
} haya sido correcta. Si el
puntero es NULL significa
que no se pudo abrir. 9
Algoritmos y Estructuras de Datos

Archivos de texto

10
Algoritmos y Estructuras de Datos
Archivos de texto
Secuencia de lneas compuestas por cero o ms caracteres, con un fin de lnea y
una marca de final de archivo.
Para leer y escribir un archivo abierto, una de las formas ms simple es con las
funciones getc y putc:
Retorna el siguiente caracter de
un archivo y requiere del
Escribe el caracter c en el puntero al flujo referenciado por
archivo referenciado por fp y el puntero (por ejemplo fp).
retorna el caracter escrito o
EOF si ocurre un error.
11
Algoritmos y Estructuras de Datos
Archivos de texto La funcin feof retorna distinto de cero
si se encontr el fin del archivo.
Ejemplo 1
#include <iostream>
#include <stdio.h> while (!feof(f1)) {
using namespace std; fputc(c, f2);
La funcin fclose corta la conexin
c = fgetc(f1); entre el puntero de tipo FILE y el
int main() { } archivo. Dado que la mayora de los
sistemas operativos limitan el nmero
FILE *f1; fclose(f1); de archivos que un programa puede
FILE *f2; abrir de manera simultnea, es una
fclose(f2); buena prctica liberar los punteros
int c; return 0; que no se utilizan, adems as se
evitan bloqueos.
f1 = fopen("entrada.txt", "r"); }
f2 = fopen("salida.txt","w");
c = fgetc(f1); Lee todo el contenido del archivo
entrada.txt y lo copia al archivo
salida.txt
12
Algoritmos y Estructuras de Datos
Archivos de texto Ejemplo 2
#include <iostream>
#include <stdio.h> while (!feof(f1)) {
using namespace std; cout << s;
fgets(s, 10 + 1,f1);
int main() { }
FILE *f1; fclose(f1);
char s[10 + 1],c; return 0;
f1 = fopen("entrada.txt", "r"); }
fgets(s, 10 + 1, f1);
Este programa lee lneas de texto de hasta
40 caracteres del archivo entrada.txt y las
muestra por pantalla.
13
Algoritmos y Estructuras de Datos
Archivos de texto
Para entradas o salidas (I/O) con formato, se deben utilizar las funciones fscanf y
fprintf. El primer argumento es el puntero al archivo en procesamiento y el
segundo especifica el formato de la cadena a leer o escribir.

Especificadores de
%i %d entero
formato de cadena:
%c caracter

%f decimal

%s cadena
14
Fuente: https://www.codingunit.com/printf-format-specifiers-format-conversions-and-formatted-output
Algoritmos y Estructuras de Datos
Archivos de texto Ejemplo 3
#include <iostream> while (!feof(f1)) {
#include <stdio.h> printf("%10d%7.2f%s\n",a,f,s);
using namespace std; fscanf(f1,"%d %f %s",&a,&f,s);
}
int main() { fclose(f1);
FILE *f1; return 0;
int a; }
float f;
char s[10 + 1],c; entrada.txt
Este programa lee lneas de texto y las
f1 = fopen("entrada.txt", "r"); muestra por pantalla, siendo la primera 10 123.45 Juan
fscanf(f1,"%d %f %s",&a,&f,s); columna es un entero (d), la segunda un 80 456.56 Ernesto
90 789.01 Roberto
decimal (f) y la tercera una cadena (s).

15
Algoritmos y Estructuras de Datos
Archivos de texto Resumen de Funciones

16
Algoritmos y Estructuras de Datos
Archivos de texto Resumen de Funciones

17
Algoritmos y Estructuras de Datos

stdio.h

ms info en:
Algoritmos y Estructura de Datos:
Material de la Ctedra >>
Pginas 103 a 106

18
Referencias
Bruno, O., Algoritmos y Estructura de Datos
https://droscarbruno.files.wordpress.com/2014/08/materialoficialayed_20141.pdf

Kernighan, B., The C Programming Language


1988. Prentice Hall

19

También podría gustarte