UC3M

Grado en Ing. Telemática/Sist. Audiovisuales/Sist. de Comunicaciones

Arquitectura de Sistemas

Septiembre 2017 - Enero 2018

9.2.2. Abriendo un fichero

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”);
    • Abre un fichero existente para lectura y escritura.

    • Crea un fichero binario para lectura y escritura.

    • Abre un fichero existente para lectura y añadir datos al final.

    • Crea un fichero binario para lectura y añadir datos al final.

    • Ninguna de las anteriores.