Escolar Documentos
Profissional Documentos
Cultura Documentos
Manejo de Archivos en C
conceptos
Registros
Gmez Gmez
Juan
35 60433423
#include <stdio.h>
Ejemplos:
El asterisco debe aparecer delante
FILE *archivo;
del nombre de la variable.
FILE *nominas, *ventas;
Estas variables pueden tener un valor nulo que se representa por la constante NULL.
Abrir el archivo.
Realizar las operaciones de entrada/salida (lectura y/o escritura de datos en el
archivo).
Cerrar el archivo.
Campos
FunciOn fopen
Parmetros:
modo: Es una cadena de caracteres que indica el modo de apertura del archivo.
Puede contener los siguientes valores:
0
rt El archivo se abre para leer.
0
wt El archivo se abre para escribir. Se borra y se escribe al principio.
0
at El archivo se abre para aadir. Se aaden los datos al final.
Valor devuelto:
E:\\clases\\FI\\ejemplo.txt
Cada elemento de la ruta (unidad, carpeta y archivo) se
separan con la doble barra invertida \\
Escritura (wt)
#include <stdio.h>
Lectura (rt)
void main() {
FILE *fa, *fb;
fa = fopen( c:\\dir1\\prueba1.txt, wt );
if (fa == NULL) {
printf( Error\n );
Comprobamos si el archivo se ha
return;
podido abrir.
}
El valor devuelto por fopen se guarda en fa. Ahora podemos
utilizar fa para acceder al archivo prueba1.txt.
Aadir (at)
fb = fopen( c:\\dir1\\prueba2.txt, wt );
if (fb == NULL) {
printf( Error\n );
Podemos abrir ms de un archivo
return;
}
...
FunciOn fprintf
#include <stdio.h>
void main() {
FILE *fa, *fb;
fa = fopen( c:\\dir1\\prueba1.txt, wt );
if (fa == NULL) {
printf( Error\n );
}else {
fb = fopen( c:\\dir1\\prueba2.txt, wt );
if (fb == NULL) {
printf( Error\n );
}else {
...
}
}
}
Contiene informaciOn
sobre el archivo en el que
se va a escribir.
#include <stdio.h>
void main() {
Se crea o se
FILE *fa, *fb;
borra el archivo
int i;
fa = fopen( c:\\dir1\\prueba1.txt, wt );
if (fa == NULL) {
printf( Error\n );
return;
}
fb = fopen( c:\\dir1\\prueba2.txt, wt );
if (fb == NULL) {
printf( Error\n );
return;
Se crea o se
}
borra el archivo
prueba1.txt
prueba1.txt
Este es el archivo fa
lnea 1
lnea 2
lnea 3
prueba2.txt
Este es el archivo fb
A+1 = B; A+2 = C; A+3 = D;
prueba2.txt
...
Contina...
FunciOn fclose
Parmetros:
#include <stdio.h>
void main() {
FILE *fa, *fb;
int i;
fa = fopen( c:\\dir1\\prueba1.txt, wt );
if (fa == NULL) {
printf( Error\n );
return;
}
fb = fopen( c:\\dir1\\prueba2.txt, wt );
if (fb == NULL) {
printf( Error\n );
return;
}
fprintf( fa, Este es el archivo fa\n );
fprintf( fb, Este es el archivo fb\n );
for (i=1; i<4; i++) {
fprintf( fa, linea %d\n, i );
fprintf( fb, A+%d = %c; , i, A+i );
}
Apertura de
Archivos
Operaciones de
entrada/salida
Contina...
Funcin fputs
fclose(fa);
fclose(fb);
fb = fopen( c:\\tmp\\prueba3.txt, rt );
...
}
Ejemplo:
FILE *f = fopen( c:\\tmp\\prueba.txt, wt );
char texto[] = una prueba;
prueba.txt
fputs( Esto es , f );
Esto es una prueba
fputs( texto, f );
Funcin fputc
Posicin de lectura
Ejemplo:
FILE *f = fopen( c:\\tmp\\prueba.txt, wt );
fputc( A, f );
prueba.txt
fputc( 66, f );
66 es el cdigo
ASCII del carcter B
AB
Inicialmente,
la posicin de
lectura est al
principio.
Si leemos 4
caracteres, la
posicin de
lectura avanza.
Si leemos 6 caracteres, la
posicin de lectura vuelve a
avanzar.
Funcin fscanf
0
0
Contiene informacin
sobre el archivo en el que
va a leer.
La funcin fscanf devuelve el n de valores que han sido ledos del archivo y
almacenados en las variables. Si no ha podido leer ms valores porque ha
llegado al final del archivo, devuelve EOF.
FunciOn fgets
Apertura
void main() {
3.45
float v1;
5.2
int v2;
char c1, c2, c3;
FILE *f = fopen( c:\\dir1\\ejemplo.txt, rt );
3.45
if (f != NULL) {
5.2
fscanf( f, %f, &v1 );
fscanf( f, %d, &v2 );
fscanf( f, %d, &v2 );
fscanf( f, %c%c, &c1, &c2 );
En la posicin de lectura hay un .
Procesado
Cierre
Lectura de caracteres: %c
0
#include <stdio.h>
Carcter espacio:
Salto de lnea: \n
Tabulador: \t
fclose(f);
2
.
3.45
5.2
0
0
Lee una secuencia de caracteres del archivo asociado al parmetro fich y los almacena
en el parmetro cadena.
La lectura termina cuando se hayan leido max-1 caracteres, se encuentre un salto de
linea o se acabe el archivo.
Si se encuentra un salto de lnea, este se incluir en la cadena.
Ejemplo:
FILE *f = fopen( c:\\tmp\\prueba.txt, rt );
char cad[80];
fgets( cad, 80, f );
prueba.txt
fgets( cad, 6, f );
Esto es
una prueba
FunciOn fgetc
FunciOn feof
Valor devuelto:
Archivos
Archivos
Tratamiento secuencial
Abrir archivo
Leer un registro
MIENTRAS no sea fin de archivo HACER
Procesar el registro ledo
Leer un registro
FIN MIENTRAS
Cerrar archivo
Realizar un programa que lea los registros de un archivo de temperaturas que contiene un
entero por cada lnea (cada lnea corresponde a un registro). El programa debe imprimir por
pantalla los valores ledos.
#include <stdio.h>
void main() {
int valor;
FILE *f = fopen( c:\\ejemplo.txt, rt );
if (f == NULL) {
printf( ERROR\n );
return;
}
fscanf( f, %d, &valor );
while (!feof(f)) {
printf( %d\n, valor );
fscanf( f, %d, &valor );
}
fclose(f);
}
Abrimos el archivo
Leemos un registro
Procesamos el registro
Archivos
Archivos
Si el ltimo registro no termina con un salto de lnea, el valor de dicho registro no aparece en
pantalla (no es procesado).
#include <stdio.h>
void main() {
int valor;
FILE *f = fopen( c:\\ejemplo.txt, rt );
if (f == NULL) {
Supongamos que la posicin de lectura se
printf( ERROR\n );
encuentra en la marca ( ) y que se va a
return;
ejecutar la siguiente lnea
}
fscanf( f, %d, &valor );
45
while (!feof(f)) {
printf( %d\n, valor );
5
fscanf( f, %d, &valor );
10
}
fclose(f);
Se saltan los separadores
hasta encontrar el
archivo. carcter 1.
Se lee el
carcter
0.
Temp_a.txt
A
B
A
C
45
55
45
60
55
32
Se intenta leer
fuera del
Archivos
Archivos
#include <stdio.h>
void main() {
FILE *ftemp, *fsal;
char sensor, aux;
int temp;
Abrimos el archivo
ftemp = fopen( c:\\dir\\temp.txt, rt );
en modo lectura
if (ftemp == NULL) {
printf( ERROR\n );
return;
}
Abrimos el archivo
fsal = fopen( c:\\dir\\temp_a.txt, wt );
en modo escritura
if (fsal == NULL) {
printf( ERROR\n );
Antes de terminar, debemos
fclose( ftemp );
cerrar el archivo temp.txt
return;
}
Contina...
Archivos
Tratamiento secuencial: ejemplo 2d
Lectura de un registro del archivo temp.txt:
fscanf( ftemp, %c, &sensor );
fscanf( ftemp, %d, &temp );
fscanf( ftemp, %c, &aux );
A
B
A
C
45
60
55
32