Академический Документы
Профессиональный Документы
Культура Документы
Contina...
fclose(fa); Cierre de los ficheros: el programa no va a seguir int fputs( char cad[], FILE *fich );
fclose(fb); escribiendo en los ficheros.
Escribe el contenido de la cadena de caracteres cad en el fichero asociado a fich.
Devuelve un valor >= 0 si la escritura se ha realizado sin problemas. En caso de error,
fb = fopen( c:\\tmp\\prueba3.txt, rt ); devuelve el valor EOF.
... Ejemplo:
} Las variables fa y fb ya no estn FILE *f = fopen( c:\\tmp\\prueba.txt, wt );
asociadas a ningn fichero. char texto[] = una prueba;
fputs( Esto es , f ); prueba.txt
Esto es una prueba
fputs( texto, f );
Podemos volver a utilizar fb para abrir un nuevo
fichero y realizar operaciones de entrada/salida
sobre l.
fclose(f); .
3.45
5.2
}
int fgetc( FILE *fich ); Cuando la posicin de lectura del fichero se encuentra al final del fichero, no se
puede seguir leyendo.
Lee un carcter del fichero asociado al parmetro fich. Durante la lectura de datos de un fichero, el programa debe comprobar si se ha
Devuelve el carcter ledo. Si no se puede leer ningn carcter, devuelve el valor EOF. llegado al final del fichero.
Ejemplo: La siguiente funcin nos permite detectar si se ha llegado al final del fichero:
FILE *f = fopen( c:\\tmp\\prueba.txt, rt );
char c1, c2; int feof( FILE *fich );
c1 = fgetc( f ); prueba.txt
Ficheros Ficheros
Tratamiento secuencial Tratamiento secuencial: ejemplo 1a
La secuencia de pasos que seguiremos para el tratamiento secuencial de Realizar un programa que lea los registros de un fichero de temperaturas que contiene un
ficheros es la siguiente: entero por cada lnea (cada lnea corresponde a un registro). El programa debe imprimir por
pantalla los valores ledos.
#include <stdio.h>
Abrir fichero void main() {
Leer un registro int valor;
FILE *f = fopen( c:\\ejemplo.txt, rt );
MIENTRAS no sea fin de fichero HACER if (f == NULL) {
Procesar el registro ledo printf( ERROR\n ); Abrimos el fichero
return;
Leer un registro }
FIN MIENTRAS fscanf( f, %d, &valor ); Leemos un registro
while (!feof(f)) {
Cerrar fichero printf( %d\n, valor ); Procesamos el registro
fscanf( f, %d, &valor );
}
fclose(f);
}
Si el ltimo registro no termina con un salto de lnea, el valor de dicho registro no aparece en Tenemos un fichero temp.txt con las temperaturas en C de tres sensores (llamados A, B y
pantalla (no es procesado). C). El siguiente programa copia las temperaturas del sensor A en un fichero llamado
temp_a.txt.
#include <stdio.h>
void main() { Cada lnea del fichero corresponde a un registro que contiene el nombre del sensor (un
int valor; carcter) y la temperatura (un entero) separados por un espacio.
FILE *f = fopen( c:\\ejemplo.txt, rt );
Por ejemplo, para el siguiente fichero temp.txt, debe generarse el fichero temp_a.txt que se
if (f == NULL) {
Supongamos que la posicin de lectura se muestra:
printf( ERROR\n );
encuentra en la marca ( ) y que se va a
return;
ejecutar la siguiente lnea
} temp.txt Temp_a.txt
fscanf( f, %d, &valor ); A
45
45
while (!feof(f)) { 45
B
60
55
printf( %d\n, valor ); 5
A
55
fscanf( f, %d, &valor ); 10
} C
32
fclose(f);
} Se saltan los separadores Se lee el Se intenta leer
hasta encontrar el carcter fuera del fichero.
carcter 1. 0.
Ficheros Ficheros
Tratamiento secuencial: ejemplo 2b Tratamiento secuencial: ejemplo 2c
Contina...
Fundamentos de Informtica. Dpto. de ATC - Pgina 7 de 8
Especialidades: Electrnica y Mecnica. Turno de Maana.
Ficheros
Tratamiento secuencial: ejemplo 2d