Você está na página 1de 4

Programación básica

Unidad 5

Archivos

Un archivo es una colección de registros con estructura idéntica que se almacena por lo general en dispositivos de
memoria secundaria.

Existen 2 tipos de archivos:

1. De texto que son una secuencia de caracteres organizados en líneas terminadas por un carácter de nueva línea,
en estos se pueden almacenar canciones, código fuente de programas, base de datos simples, etc. Se
caracterizan por ser planos, es decir no tienen formato

2. Binarios que son una secuencia de bytes, estos pueden ser imágenes, texto con formato, archivos ejecutables,
etc.

Existe un sistema de archivos diseñado para operar sobre archivos de texto denominado Sistema de Archivos con Buffer
(SAB), el cual, comprende varias funciones interrelacionadas que se encuentran dentro de la librería stdio.h (e/s) así
como un apuntador a archivo.

El apuntador a archivo es el lazo que mantiene al SAB. Va apuntar a una estructura que define varias cosas sobre un
archivo, incluyendo nombre, estado y posición actual. En esencia identifica un archivo de disco específico y determina
donde se van a realizar las funciones de E/S. Un apuntador a archivo es una variable apuntador de tipo FILE que está
definido en stdio.h

Una variable apuntador contiene una dirección de memoria y se declara: tipo *nombre;

En la siguiente tabla se describen las funciones más usadas del sistema de archivos con buffer

NOMBRE FUNCION
fopen() Abre un archivo
fclose() Cierra un archivo
putc() Escribe un carácter en un archivo
getc() Lee un carácter en un archivo
fseek() Busca en un archivo un byte especificado
fprintf() Similar a printf()
fscanf() Similar a scanf()
feof() Devuelve true si se ha alcanzado el final del archivo
ferror() Devuelve true si ha ocurrido un error
rewind() Sitúa el indicador de posición del archivo al principio del archivo
Tabla 5.1 Funciones del sistema de archivos con buffer

La función fopen() tiene 2 usos:


1. Abre un archivo de disco para poder utilizarlo
2. Devuelve un apuntador a archivo que identifica ese archivo

La forma general en que se utiliza fopen() es:


FILE *fp;
fp=fopen(nombre_del_archivo,modo);
1
Ing. STG
Programación básica
Unidad 5

Donde nombre_del_archivo es una cadena de caracteres que contendrá la ruta y el nombre del archivo con extensión
.txt y modo tendrá uno de los valores que se mencionan en la tabla 5.2.

MODO SIGNIFICADO
r Abre un archivo de texto para lectura
w Crea un archivo de texto para escritura
a Abre un archivo de texto para añadir
rb Abre un archivo binario para lectura
wb Crea un archivo binario para escritura
ab Abre un archivo binario para añadir
r+ Abre un archivo de texto para lectura / escritura
w+ Crea un archivo de texto para lectura / escritura
a+ Añade o crea un archivo de texto para lectura / escritura
r+b Abre un archivo binario para lectura / escritura
w+b Crea un archivo binario para lectura / escritura
a+b Añade o crea un archivo binario para lectura / escritura
Tabla 5.2 Valores para modo

Por ejemplo si se quiere abrir un archivo para escritura que se llame prueba se puede hacer con el siguiente código:

FILE *fp;
fp=fopen(“C:\\Users\\Sheila\\Desktop\\programacion basica\\prueba.txt”,”w”);

Sin embargo el código anterior se verá escrito así:

if((fp=fopen(“C:\\Users\\Sheila\\Desktop\\programacionbasica\\prueba.txt”,”w”))==NULL)
{printf(“No se puede abrir el archivo”);
exit();
}

Antes de intentar escribir en un archivo, este método detecta si ha habido algún error al abrirlo, como intentar escribir
estando protegido el disco contra escritura o el disco lleno. Se usa nulo que normalmente es 0 porque un apuntador a
archivo nunca podrá tener ese valor. (NULL está definido en stdio.h).

Si se usa fopen() para abrir un archivo para escritura, entonces cualquier archivo existente con el mismo nombre se
borrará y se crea uno nuevo. Si no existe un archivo con el mismo nombre, entonces se creará. Si se quiere añadir al final
del archivo entonces debe usar el modo “a”. Si se usa a y no existe el archivo, se devolverá un error. La apertura de un
archivo para las operaciones de lectura requiere que exista el archivo. Si no existe, fopen() devolverá un error.
Finalmente, si se abre un archivo para las operaciones de leer / escribir, la computadora no lo borrará si existe; sin
embargo, si no existe, la computadora lo creará.

La función fclose() cierra una secuencia que fue abierta mediante una llamada a fopen(). Escribe toda la información que
todavía se encuentre en el buffer en el disco y realiza un cierre formal del archivo a nivel del sistema operativo. Un error
en el cierre de una secuencia puede generar todo tipo de problemas, incluyendo la pérdida de datos, destrucción de
archivos y posibles errores intermitentes en el programa.

La forma general de la llamada a la función fclose es: fclose(fp);

2
Ing. STG
Programación básica
Unidad 5

Donde fp es el apuntador al archivo devuelto por la llamada a fopen(). Si se devuelve un valor cero significa que la
operación de cierre ha tenido éxito. Generalmente, esta función solo falla cuando un disco se ha retirado antes de
tiempo o cuando no queda espacio libre en el mismo.

Las funciones fprintf() y fscanf() se comportan exactamente como prinft() y scanf(), a diferencia que en lugar de operar
en consola operan sobre archivos. La forma general para estas funciones es:

fprintf (fp,cadena_de_control,lista_de_argumentos);
fscanf (fp,cadena_de_control,lista_de_argumentos);

Donde fp es un apuntador al archivo devuelto por una llamada a fopen(). fprintf() y fscanf() dirigen sus operaciones de
E/S al archivo al que apunta fp.

Ejemplo:
fprintf(fp,"\n%d %s %s %d ", no_control, nombre,materia, cali);
fscanf(fp,"%d %s %s %d %d", &no_control, &nombre, &materia, &cali, &baja);

La función feof() determina cuando se ha alcanzado el fin del archivo, devuelve diferente de cero si se ha alcanzado el
final del archivo, en cualquier otro caso devuelve 0.

La función tiene la siguiente forma: feof(fp);

La función rewind() inicializa el indicador de posición, al principio del archivo, indicado por su argumento. La forma
general es: rewind (fp);

Donde fp es el apuntador al archivo.

La función ferror() determina si se ha producido en error en una operación sobre un archivo. Su forma general es:

ferror(fp);

Donde fp es el apuntador al archivo. Devuelve cierto si se ha producido un error durante la última operación sobre el
archivo. En caso contrario, devuelve falso. Debido a que cada operación sobre el archivo actualiza la condición de error,
se debe llamar a ferror() inmediatamente después de la operación de este tipo; si no se hace así, el error puede
perderse.

Además de las funciones que ya se mencionaron anteriormente es de mucha utilidad mencionar la función remove y la
función rename.

La función remove tiene la siguiente forma: remove(f_nombre);

Borra el archivo especificado por f_nombre y devuelve 0 si el archivo se borró correctamente y -1 si se produjo un error

Ejemplo: remove("a:\\alumnos.txt");

La función rename tiene la siguiente forma: rename(nombre_ant,nombre_nuev);

Esta función cambia el nombre del archivo especificado por nombre_ant a nombre_nuev. Devuelve 0 si tiene éxito y un
valor no nulo si se produce un error.
Ejemplo: rename("a:\\auxiliar.txt", "a:\\alumnos.txt");
3
Ing. STG
Programación básica
Unidad 5

ANEXOS

El tipo de dato FILE es una estructura que contiene información sobre el archivo de texto necesario para realizar las
operaciones de entrada/salida sobre él. incluye:

o posición actual del archivo


o indicador de fin de archivo (EOF)
o indicador de error
o apuntador al buffer del archivo

Una variable apuntador contiene una dirección de memoria y se declara: tipo *nombre;

Existen dos operadores de apuntador

x=&suma y= *x

& guarda la dirección de memoria donde está almacenado el valor de suma


* apunta al valor que está almacenado en esa dirección de memoria

Si suma=10 y decimos que x=&suma entonces x= (posición de memoria) y, y = *x entonces y=10

4
Ing. STG

Você também pode gostar