Académique Documents
Professionnel Documents
Culture Documents
Ficheros de
texto
Definicin
Declaracin
Apertura y cierre
Lectura
Tema 3: Ficheros en C++
Escritura
Ejercicios
Programacin 2
Ficheros
binarios
Definicin
Declaracin,
apertura y cierre
Lectura
Escritura
Ejercicios
Tema 3
1 Ficheros de texto
Definicin
Ficheros de
texto
Declaracin
Definicin
Declaracin
Apertura y cierre
Apertura y cierre
Lectura
Lectura de un fichero de texto (1/2)
Escritura
Ejercicios
Escritura de un fichero de texto
Ficheros Ejercicios
binarios
Definicin
Declaracin,
2 Ficheros binarios
apertura y cierre
Lectura
Definicin
Escritura
Ejercicios
Declaracin, apertura y cierre
Errores Lectura de un fichero binario
Escritura de un fichero binario
Ejercicios
3 Control de errores de lectura/escritura
Qu es un fichero de texto?
Tema 3
Tema 3
Ficheros de
texto
Definicin
Declaracin
Apertura y cierre
Lectura Hay que poner #include <fstream> :
Escritura
Ejercicios ifstream fich_leer; (slo para leer)
Ficheros ofstream fich_escribir; (slo para escribir)
binarios
Definicin
fstream fich_leer_y_escribir; (raro en
Declaracin,
apertura y cierre
ficheros de texto)
Lectura
Escritura
Ejercicios
Errores
Apertura y cierre (1/2)
Tema 3
Tema 3
Forma abreviada:
Ficheros de ifstream fl("ifi.txt"); // por defecto, ios::in
texto
Definicin
Declaracin ofstream fe("ofi.txt"); // ios::out
Apertura y cierre
Lectura
Escritura
Ejercicios
Tema 3
Tema 3
Ficheros de ...
texto
Definicin
if (fi.is_open())
Declaracin {
Apertura y cierre
getline(fi,s); // s es de tipo string
Lectura
Escritura // fi.getline(cad,tCAD); // cad es char []
Ejercicios while (!fi.eof())
Ficheros {
binarios // hacer algo con s
Definicin
Declaracin,
apertura y cierre getline(fi,s);
Lectura
Escritura
}
Ejercicios
Errores
fi.close();
}
Lectura por lneas (2/2)
Tema 3
fi.close();
}
Lectura carcter a carcter
Tema 3
Ficheros de
texto ...
Definicin if (fi.is_open())
Declaracin
Apertura y cierre
{
Lectura c = fi.get();
Escritura
while (!fi.eof())
Ejercicios
{
Ficheros // hacer algo con c
binarios
Definicin
Declaracin, c = fi.get();
apertura y cierre
Lectura
}
Escritura
Ejercicios
fi.close();
Errores }
Lectura de ms de una variable
Tema 3
Tema 3
Ficheros de
texto
Definicin
Declaracin
ofstream fo;
Apertura y cierre
Lectura fo.open("mifichero.txt",ios::out);
Escritura
Ejercicios
if (fo.is_open())
{
Ficheros
binarios fo << "Un numero entero: " << numentero << endl;
Definicin ...
Declaracin,
apertura y cierre
Lectura fo.close();
Escritura
}
Ejercicios
Errores
Ejercicios (1/5)
Tema 3
Ficheros de
texto Ejercicio 1
Definicin
Declaracin
Apertura y cierre
Haz un programa que lea un fichero fichero.txt y
Lectura
Escritura
escriba en otro fichero FICHERO2.TXT el contenido del
Ejercicios fichero de entrada con todas las letras en maysculas.
Ficheros
binarios
Definicin
Ejemplo:
Declaracin,
apertura y cierre
Lectura
fichero.txt FICHERO2.TXT
Escritura Hola, mundo. HOLA, MUNDO.
Ejercicios
Como estamos? COMO ESTAMOS?
Errores
Adios, adios... ADIOS, ADIOS...
Ejercicios (2/5)
Tema 3
Ejercicio 2
Ficheros de Haz un programa que lea dos ficheros de texto, f1.txt y
texto
Definicin
f2.txt, y escriba por pantalla las lneas que sean
Declaracin
Apertura y cierre
distintas en cada fichero, con < delante si la lnea
Lectura
Escritura
corresponde a f1.txt, y > si corresponde a f2.txt.
Ejercicios
Ficheros Ejemplo:
binarios
Definicin
f1.txt f2.txt
Declaracin,
apertura y cierre hola, mundo. hola, mundo.
Lectura
Escritura
como estamos? como vamos?
Ejercicios adios, adios... adios, adios...
Errores
La salida debe ser:
< como estamos?
> como vamos?
Ejercicios (3/5)
Tema 3
Ejercicio 3
Ficheros de
texto
Definicin
Disea una funcin finfichero que reciba dos
Declaracin
Apertura y cierre
parmetros: el primero debe ser un nmero entero positivo
Lectura
Escritura
n, y el segundo el nombre de un fichero de texto. La funcin
Ejercicios
debe mostrar por pantalla las n ltimas lneas del fichero.
Ficheros
binarios Ejemplo:
Definicin
Declaracin,
apertura y cierre $ finfichero(3,"cadenas.txt")
Lectura
Escritura
Ejercicios with several words
Errores unapalabra
muuuuchas palabras, muchas, muchas...
Ejercicios (4/5)
Tema 3
Tema 3
Ejercicio 4
Ficheros de Dados dos ficheros de texto f1.txt y f2.txt, en los
texto
Definicin que cada lnea es una serie de nmeros separados por :,
Declaracin
Apertura y cierre y suponiendo que las lneas estn ordenadas por el primer
Lectura
Escritura nmero de menor a mayor en los dos ficheros, haz un
Ejercicios
programa que lea los dos ficheros lnea por lnea y escriba
Ficheros
binarios en el fichero f3.txt las lneas comunes a ambos
Definicin
Declaracin,
apertura y cierre
ficheros, como en el siguiente ejemplo:
Lectura
Escritura Ejemplo:
Ejercicios
f1.txt f2.txt f3.txt
Errores
10:4543:23 10:334:110 10:4543:23:334:110
15:1:234:67 12:222:222 15:1:234:67:881:44
17:188:22 15:881:44 20:111:22:454:313
20:111:22 20:454:313
Qu es un fichero binario?
Tema 3
Tambin se le denomina fichero sin formato
Ficheros de
Un fichero binario es un fichero en el que los datos se
texto
Definicin
almacenan tal y como se almacenan en la memoria del
Declaracin
Apertura y cierre
ordenador, no se convierten en caracteres para
Lectura almacenarlos.
Escritura
Ejercicios
Normalmente, cada elemento del que se quiere
Ficheros
binarios guardar informacin se almacena en un registro
Definicin
Declaracin, (struct)
apertura y cierre
Lectura
Escritura
Si los elementos se almacenan con registros, se puede
Ejercicios
acceder directamente al n-simo elemento sin leer los
Errores
n 1 anteriores.
Los ficheros de texto son ficheros de acceso
secuencial, y los binarios son ficheros de acceso
directo (o acceso aleatorio)
Declaracin de variables, apertura y cierre de
ficheros binarios
Tema 3
Declaracin de variables: como en los ficheros de
texto:
Ficheros de
texto
ifstream fbl; // fichero para lectura
Definicin ofstream fbe; // fichero para escritura
Declaracin
Apertura y cierre
Lectura
Escritura
Apertura del fichero: hay que aadir ios::binary
Ejercicios
Tema 3
Tema 3
Tema 3
Tema 3
Ficheros de
texto
Si se desea almacenar un registro en un fichero binario que
Definicin contenga una cadena de caracteres, se debe utilizar un
Declaracin
Apertura y cierre vector de caracteres, nunca un string. Puede ser
Lectura
Escritura necesario recortar el string:
Ejercicios
Ficheros
binarios
Definicin
char cad[tcREG];
Declaracin, string s;
apertura y cierre
Lectura
Escritura ...
Ejercicios strncpy(cad,s.c_str(),tcREG-1);
Errores cad[tcREG-1]=\0; // strncpy no pone el \0 si no aparece
Informacin sobre la posicin actual
Tema 3
Ficheros de
texto
Definicin
Declaracin
La posicin actual del puntero de lectura (en bytes) se
Apertura y cierre
Lectura
puede ver mediante la funcin tellg, y la de escritura
Escritura mediante tellp. Ejemplo:
Ejercicios
Errores
Ejercicios
Tema 3
Ejercicio 5
Ficheros de
texto Dado un fichero binario alumnos.dat que tiene registros
Definicin
Declaracin de alumnos, con la siguiente informacin por cada alumno:
Apertura y cierre
Lectura
dni vector de 10 caracteres
Escritura apellidos vector de 40 caracteres
Ejercicios
nombre vector de 20 caracteres
Ficheros
binarios turno entero
Definicin
Declaracin,
apertura y cierre
Lectura Haz un programa que imprima por pantalla el DNI de todos
Escritura
Ejercicios
los alumnos del turno 7.
Errores
Tema 3
Ejercicio 6
Ficheros de Dado el fichero alumnos.dat del ejercicio anterior, haz
texto
Definicin un programa que pase a maysculas el nombre y los
Declaracin
Apertura y cierre apellidos del quinto alumno del fichero, y lo vuelva a escribir
Lectura
Escritura en el fichero.
Ejercicios
Ficheros Ejercicio 7
binarios
Definicin
Declaracin,
Disea un programa que construya el fichero
apertura y cierre
Lectura
alumnos.dat a partir de un fichero de texto alu.txt
Escritura
Ejercicios
en el que cada dato (dni, nombre, etc) est en una lnea
Errores 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
Escribe un programa que se encarge de la asignacin
Definicin
Declaracin
automtica de alumnos en 10 turnos de prcticas. A cada
Apertura y cierre
Lectura
alumno se le asignar el turno correspondiente al ltimo
Escritura
Ejercicios
nmero de su DNI (a los alumnos con DNI acabado en 0 se
Ficheros les asignar el turno 10). Los datos de los alumnos estn
binarios
Definicin
en un fichero alumnos.dat con la misma estructura que
Declaracin,
apertura y cierre en los ejercicios anteriores.
Lectura
Escritura La asignacin de turnos debe hacerse leyendo el fichero
Ejercicios
una sola vez, y sin almacenarlo en memoria. En cada paso
Errores
se leer la informacin correspondiente a un alumno, se
calcular el turno que le corresponde, y se guardar el
registro en la misma posicin.
Errores de lectura/escritura (1/2)
Tema 3
Tema 3
if (fi.is_open())
Ficheros de {
texto bool error=false;
Definicin
Declaracin getline(fi,s);
Apertura y cierre if (fi.fail() && !fi.eof()) error=true;
Lectura
Escritura
while (!error && !fi.eof())
Ejercicios {
Ficheros
// hacer algo con s
binarios
Definicin getline(fi,s);
Declaracin,
apertura y cierre if (fi.fail() && !fi.eof()) error=true;
Lectura }
Escritura
Ejercicios
if (error)
Errores
// mensaje de error
fi.close();
}