La función fopen
abre un fichero y lo asocia a un flujo.
Necesitas especificar como argumentos el nombre de ese fichero (o la
ruta y el nombre) y el modo de apertura.
#include <stdio.h> FILE *fopen(const char *filename, const char *mode);
Aquí filename
es un puntero a char
que
referencia un string con el nombre del fichero. mode
apunta a otro string que especifica la manera en la que se va a abrir
el fichero. La función fopen
devuelve un puntero de tipo
FILE
. Si ha ocurrido algún error al abrirse, devuelve
NULL
.
El parámetro mode
es una combinación de los caracteres
r
(read, lectura), w
(write, escritura), b
(binario),
a
(append, añadir), y +
(actualizar). Si usas el caracter a
y el
fichero existe, el contenido de ese fichero se mantiene y los datos
nuevos se añaden justo al final, tras el último dato que ya estuviera
escrito (el indicador de fichero pues no está situado al inicio del
fichero, sino que en este caso está al final).
Si el fichero no existe, lo crea. Con w
es
diferente; este modo siempre borra los datos del fichero si existe (si
no, crea uno nuevo). Si al modo le añades el +
, permite
que el fichero se abra para escritura o lectura y puedes modificar
cualquier dato que hubiera en él. Si usas r
, el fichero
debe existir; si no, fopen
dará error y te devolverá
NULL
.
La siguiente lista muestra los posibles modos de abrir un fichero:
"r"
abre un fichero de texto existente para lectura.
"w"
crea un fichero de texto para escritura.
"a"
abre un fichero de texto existente para añadir datos.
"r+"
abre un fichero de texto existente para lectura o
escritura.
"w+"
crea un fichero de texto para lectura o escritura.
"a+"
abre o crea un fichero de texto para añadirle datos.
"rb"
abre un fichero binario existente para lectura.
"wb"
crea un fichero binario para escritura.
"ab"
abre un fichero binario existente para añadir datos.
"r+b"
abre un fichero binario existente para lectura
o escritura.
"w+b"
crea un fichero binario para lectura o escritura.
"a+b"
abre o crea un fichero binario para añadirle datos.
A veces podrás ver que el modo está escrito como "rb+"
en
vez de "r+b"
, por ejemplo, pero es equivalente.
Responde a las siguientes preguntas para ver si has entendido lo que se explica en este documento:
¿Qué hace la siguiente expresión?:
fopen(“text.bin”, ”r+b”);