Beruflich Dokumente
Kultur Dokumente
Ficheros de
texto
Definicin
Declaracin
Apertura y cierre
Lectura
Escritura
Ejercicios
Programacin 2
Ficheros
binarios
Definicin
Declaracin,
apertura y cierre
Lectura
Escritura
Ejercicios
Errores
Curso 2013-2014
ndice
Tema 3
Ficheros de texto
Definicin
Declaracin
Apertura y cierre
Lectura de un fichero de texto (1/2)
Escritura de un fichero de texto
Ejercicios
Ficheros binarios
Definicin
Declaracin, apertura y cierre
Lectura de un fichero binario
Escritura de un fichero binario
Ejercicios
Ficheros de
texto
Definicin
Declaracin
Apertura y cierre
Lectura
Escritura
Ejercicios
Ficheros
binarios
Definicin
Declaracin,
apertura y cierre
Lectura
Escritura
Ejercicios
Errores
Qu es un fichero de texto?
Tema 3
Ficheros de
texto
Definicin
Declaracin
Apertura y cierre
Lectura
Escritura
Ejercicios
Ficheros
binarios
Definicin
Declaracin,
apertura y cierre
Lectura
Escritura
Ejercicios
Errores
Ficheros de
texto
Definicin
Declaracin
Apertura y cierre
Lectura
Escritura
Ejercicios
Ficheros
binarios
Definicin
Declaracin,
apertura y cierre
Lectura
Escritura
Ejercicios
Errores
Ficheros de
texto
Definicin
Declaracin
Apertura y cierre
Lectura
Escritura
Ejercicios
Ficheros
binarios
Definicin
Declaracin,
apertura y cierre
Lectura
Escritura
Ejercicios
Errores
ios::in
ios::out
ios::in | ios::out
ios::out | ios::app
(fstream)
Forma abreviada:
Ficheros de
texto
Definicin
Declaracin
Apertura y cierre
Lectura
Escritura
Ejercicios
Ficheros
binarios
Definicin
Declaracin,
apertura y cierre
Lectura
Escritura
Ejercicios
Errores
ifstream fi;
...
while (!fi.eof() ...)
Lectura
Escritura
Ejercicios
Ficheros
binarios
Definicin
Declaracin,
apertura y cierre
Lectura
Escritura
Ejercicios
Errores
Cmo funciona?
Cuando se intenta leer un dato (carcter, nmero, etc)
que ya no est en el fichero el mtodo devuelve true
OJO: despus de haber leido el ltimo dato vlido
sigue devolviendo false, luego ...
Es necesario hacer una lectura extra (que puede
devolver datos no vlidos que deben ignorarse) para
provocar la deteccin del final del fichero
Ficheros de
texto
Definicin
Declaracin
Apertura y cierre
Lectura
Escritura
Ejercicios
Ficheros
binarios
...
if (fi.is_open())
{
getline(fi,s); // s es de tipo string
// fi.getline(cad,tCAD); // cad es char []
while (!fi.eof())
{
// hacer algo con s
Definicin
Declaracin,
apertura y cierre
getline(fi,s);
Lectura
Escritura
Ejercicios
fi.close();
Errores
Ficheros
binarios
Definicin
Declaracin,
apertura y cierre
...
if (fi.is_open())
{
s="";
getline(fi,s);
while (!fi.eof() || s.length()!=0)
{
// hacer algo con s
Lectura
s=""; // inicializar s
getline(fi,s);
Escritura
Ejercicios
Errores
fi.close();
}
Ficheros de
texto
Definicin
Declaracin
Apertura y cierre
Lectura
Escritura
Ejercicios
Ficheros
binarios
...
if (fi.is_open())
{
c = fi.get();
while (!fi.eof())
{
// hacer algo con c
Definicin
c = fi.get();
Declaracin,
apertura y cierre
Lectura
Escritura
Ejercicios
Errores
fi.close();
}
#include <fstream>
...
ifstream fi;
int numentero; double numreal;
Lectura
Escritura
Ejercicios
Ficheros
binarios
Definicin
Declaracin,
apertura y cierre
Lectura
Escritura
Ejercicios
Errores
fi.open("mifichero.txt",ios::in);
if (fi.is_open())
{
fi >> numentero;
while (!fi.eof())
{
fi >> numreal;
// hacer algo con numentero y numreal
fi >> numentero; // lectura "extra" ?
}
fi.close();
}
Ficheros de
texto
Definicin
Declaracin
ofstream fo;
Apertura y cierre
Lectura
Escritura
Ejercicios
Ficheros
binarios
Definicin
fo.open("mifichero.txt",ios::out);
if (fo.is_open())
{
fo << "Un numero entero: " << numentero << endl;
...
Declaracin,
apertura y cierre
fo.close();
Lectura
Escritura
Ejercicios
Errores
Ejercicios (1/5)
Tema 3
Ficheros de
texto
Ejercicio 1
Definicin
Declaracin
Apertura y cierre
Lectura
Escritura
Ejercicios
Ficheros
binarios
Definicin
Declaracin,
apertura y cierre
FICHERO2.TXT
Hola, mundo.
Como estamos?
Adios, adios...
HOLA, MUNDO.
COMO ESTAMOS?
ADIOS, ADIOS...
Lectura
Escritura
Ejercicios
Errores
Ejercicios (2/5)
Tema 3
Ejercicio 2
Ficheros de
texto
Definicin
Declaracin
Apertura y cierre
Lectura
Escritura
Ejercicios
Ficheros
binarios
Definicin
Declaracin,
apertura y cierre
Lectura
Escritura
Ejercicios
Errores
Ejemplo:
f1.txt
hola, mundo.
como estamos?
adios, adios...
f2.txt
hola, mundo.
como vamos?
adios, adios...
Ejercicios (3/5)
Tema 3
Ficheros de
texto
Definicin
Declaracin
Apertura y cierre
Lectura
Escritura
Ejercicios
Ficheros
binarios
Ejercicio 3
Disea una funcin finfichero que reciba dos
parmetros: el primero debe ser un nmero entero positivo
n, y el segundo el nombre de un fichero de texto. La funcin
debe mostrar por pantalla las n ltimas lneas del fichero.
Ejemplo:
Definicin
Declaracin,
apertura y cierre
$ finfichero(3,"cadenas.txt")
Lectura
Escritura
Ejercicios
Errores
Ejercicios (4/5)
Tema 3
Ficheros de
texto
Definicin
Declaracin
Apertura y cierre
Ejercicio 3 (sigue)
Hay dos soluciones:
1
Lectura
Escritura
Ejercicios
Ficheros
binarios
Definicin
Declaracin,
apertura y cierre
Lectura
Escritura
Ejercicios
Errores
Ejercicios (5/5)
Tema 3
Ejercicio 4
Ficheros de
texto
Definicin
Declaracin
Apertura y cierre
Lectura
Escritura
Ejercicios
Ficheros
binarios
Definicin
Declaracin,
apertura y cierre
Lectura
Escritura
Ejercicios
Errores
f2.txt
f3.txt
10:334:110
12:222:222
15:881:44
20:454:313
10:4543:23:334:110
15:1:234:67:881:44
20:111:22:454:313
Qu es un fichero binario?
Tema 3
Escritura
Ejercicios
Ficheros
binarios
Definicin
Declaracin,
apertura y cierre
Lectura
Escritura
Ejercicios
Errores
Ficheros de
texto
Definicin
Declaracin
Apertura y cierre
Lectura
Escritura
Ejercicios
Ficheros
binarios
Definicin
Declaracin,
apertura y cierre
Lectura
Escritura
Ejercicios
Errores
Ficheros de
texto
Definicin
Declaracin
Apertura y cierre
Lectura
Escritura
Ejercicios
Ficheros
binarios
Definicin
Declaracin,
apertura y cierre
Lectura
fbl.open("mifichero.dat",ios::in | ios::binary);
if (fbl.is_open())
{
fbl.read((char *)&ciudad, sizeof(ciudad));
while (!fbl.eof())
{
// procesar ciudad
Escritura
Ejercicios
Errores
Ficheros de
texto
Definicin
Declaracin
Apertura y cierre
Lectura
Escritura
Ejercicios
Ficheros
binarios
Definicin
Declaracin,
apertura y cierre
Lectura
Escritura
Ejercicios
Errores
if (fbl.is_open())
{
// posicionar para leer el tercer elemento
fbl.seekg ( (3-1)*sizeof(ciudad), ios::beg);
fbl.read( (char *)&ciudad, sizeof(ciudad) );
...
}
Ficheros de
texto
Definicin
Declaracin
Apertura y cierre
Lectura
Escritura
TIPOCIUDAD ciudad;
ofstream fbe;
Ejercicios
Ficheros
binarios
Definicin
Declaracin,
apertura y cierre
fbe.open("mifichero.dat",ios::out | ios::binary);
if (fbe.is_open())
{
// rellenar ciudad
Lectura
Escritura
Ejercicios
Errores
Ficheros de
texto
Definicin
Declaracin
Apertura y cierre
Lectura
Escritura
Ejercicios
Ficheros
binarios
Definicin
Declaracin,
apertura y cierre
if (fbe.is_open())
{
// posicionar para escribir el tercer elemento
fbe.seekp ( (3-1)*sizeof(ciudad), ios::beg);
fbe.write( (const char *)&ciudad, sizeof(ciudad) );
...
}
Lectura
Escritura
Ejercicios
Errores
Ficheros de
texto
Definicin
Declaracin
Apertura y cierre
Lectura
Escritura
Ejercicios
Ficheros
binarios
Definicin
Declaracin,
apertura y cierre
Lectura
Escritura
Ejercicios
Errores
char cad[tcREG];
string s;
...
strncpy(cad,s.c_str(),tcREG-1);
cad[tcREG-1]=\0; // strncpy no pone el \0 si no aparece
Ficheros de
texto
Definicin
Declaracin
Apertura y cierre
Lectura
Escritura
Ejercicios
Ficheros
binarios
Definicin
Declaracin,
apertura y cierre
Lectura
Escritura
Ejercicios
Errores
Ejercicios
Tema 3
Ejercicio 5
Ficheros de
texto
Definicin
Declaracin
Apertura y cierre
Lectura
Escritura
Ejercicios
Ficheros
binarios
vector de 10 caracteres
vector de 40 caracteres
vector de 20 caracteres
entero
Definicin
Declaracin,
apertura y cierre
Lectura
Escritura
Ejercicios
Errores
Ejercicios
Tema 3
Ejercicio 6
Ficheros de
texto
Definicin
Declaracin
Apertura y cierre
Lectura
Escritura
Ejercicios
Ficheros
binarios
Definicin
Declaracin,
apertura y cierre
Lectura
Escritura
Ejercicios
Errores
Ejercicio 7
Disea un programa que construya el fichero
alumnos.dat a partir de un fichero de texto alu.txt
en el que cada dato (dni, nombre, etc) est en una lnea
distinta. Ten en cuenta que en el fichero de texto el dni,
nombre y apellidos pueden ser ms largos que los tamaos
especificados para el fichero binario, en cuyo caso se
deben recortar.
Ejercicios
Tema 3
Ejercicio 8
Ficheros de
texto
Definicin
Declaracin
Apertura y cierre
Lectura
Escritura
Ejercicios
Ficheros
binarios
Definicin
Declaracin,
apertura y cierre
Lectura
Escritura
Ejercicios
Errores
Ficheros de
texto
Definicin
Declaracin
Apertura y cierre
Lectura
Escritura
Ejercicios
Ficheros
binarios
Definicin
Declaracin,
apertura y cierre
Lectura
Escritura
Ejercicios
Errores
Ficheros de
texto
Definicin
Declaracin
Apertura y cierre
Lectura
Escritura
Ejercicios
Ficheros
binarios
if (fi.is_open())
{
bool error=false;
getline(fi,s);
if (fi.fail() && !fi.eof()) error=true;
while (!error && !fi.eof())
{
// hacer algo con s
getline(fi,s);
if (fi.fail() && !fi.eof()) error=true;
Definicin
Declaracin,
apertura y cierre
Lectura
Escritura
Ejercicios
if (error)
// mensaje de error
fi.close();
Errores