Ha pasado casi dos meses desde que comenzamos con el cursobásico de C, donde hemos podido empezar completamente desde cero, realizando
innumerables ejercicios y yendo paso a paso ha llegado el momento de llegar a
la recta final del curso con el último capítulo del mismo: Los ficheros.
Foto tomada de freedigitalphotos.net |
C ofrece la posibilidad de manejar ficheros tanto de texto
como binarios, gracias a esto seremos capaces de almacenar toda la información
que vayamos manejando con cualquier programa.
Los ficheros de texto son cualquier fichero que contiene
caracteres alfanuméricos que se pueden leer desde un editor de texto normal y
corriente. Los ficheros binarios contienen los caracteres 0 y 1, desde los
cuales se puede leer cualquier tipo de información.
Operaciones ficheros de texto.
Para operar con ficheros es necesario utilizar ciertos
elementos de la librería stdio.h.
Abrir y cerrar un fichero.
Para abrir un fichero se utiliza la instrucción fopen de
la siguiente forma:
FILE * fopen (ruta_fichero,modo_apertura);
Ambos parámetros son de tipo char, el tipo de apertura son
los siguientes:
“r” – El fichero se abre en modo lectura.
“w” – El fichero se abre en modo escritura. En ese modo se
comienza a escribir el fichero desde cero, si el fichero no existe se creará.
“a” – El fichero se crea en modo adición. El fichero se
abre en modo escritura y se comenzará a escribir a partir del mismo.
Con la instrucción fclose se cierra el fichero, la llamada
sería la siguiente:
int fclose
(FILE *nombre_fichero);
Leer un
fichero.
Se utilizará la instrucción fscanf de la siguiente forma:
int fscanf (FILE *nombre_fichero, formato,
direcciones_memoria);
Como parámetros se pasa el nombre del fichero, el formato
de escritura y las direcciones donde se escribirá el contenido.
Escribir un fichero.
Se utiliza la instrucción fprintf de la siguiente forma:
int fprintf (FILE *nombre_fichero, formato, valores);
Como parámetros se utilizará el fichero, el formato de
lectura y las variables donde se van a almacenar.
Comprobar final del fichero.
Para poder comprobar si hemos llegado al final del fichero
utilizaremos la instrucción feof de la siguiente forma:
int feof
(FILE *nombre_fichero);
Operaciones ficheros binarios.
Aunque el concepto de fichero es básicamente el mismo, las
operaciones también son más o menos similares, salvo por algunos matices,
veamos las operaciones.
Abrir un fichero.
Para abrir un fichero se utiliza la mismo instrucción que
con el fichero de texto, fopen, el modo de apertura varía un poco con respecto
a los ficheros de texto.
“rb” – Abre el fichero binario en modo lectura.
“wb” – Abre el fichero binario en modo escritura.
“ab” – Abre el fichero binario en modo adición.
La forma de usar el fichero es exactamente la misma:
FILE * fopen (ruta_fichero,modo_apertura);
Cerrar un fichero.
La función que se encarga del cerrado del fichero es
exactamente la misma, fclose.
int fclose
(FILE *nombre_fichero);
Leer un
fichero.
Ahora la forma de operar con el fichero es la siguiente:
int
fread( void * direccion, int tam, int numdatos, FILE * fichero );
Con fread se pasa por parámetros una dirección de memoria,
un número de bytes que ocupa, los datos a leer y el fichero.
Escribir un fichero.
Al igual que con la lectura, la escritura se realiza de la
siguiente forma:
int
fwrite( void * direccion, int tam, int numdatos, FILE * fichero );
Al igual que con la lectura, se pasa como parámetros la dirección de
memoria, el tamaño que ocupa, el número de datos y el fichero donde se va a
escribir.
Fin de fichero.
Al igual que en los ficheros de texto, se utiliza la función
feof:
int feof
(FILE *nombre_fichero);
Conclusiones.
Con este capítulo hemos terminado el curso básico de C. Se
han quedado muchas cosas en el tintero, muchos ejercicios que realizar (y que
se irán realizando en futuros posts) y muchas cuestiones que tratar.
Ahora es hora de comenzar una nueva etapa, toca comenzar
con programación orientada a objetos, ver todas sus características y todas sus
posibles aplicaciones. Pero C nunca lo abandonaremos, al igual que no
abandonaremos ninguna de las plataformas y lenguajes que tratemos.
El siguiente paso con C será un curso intermedio de C y
terminar de ver las estructuras dinámicas de datos que faltan, podríamos ver
programación gráfica o de red entre otras cosas, pero todo eso se irá tratando
en el futuro, tenedlo por seguro.
¿Qué programas realizarías usando ficheros?