Hoy vamos a ver cómo escribir o agregar contenido (cadenas, números, etcétera) a un archivo de texto o fichero txt en C, utilizando la función fopen, fprintf y fclose.

Abriendo archivo con fopen para posteriormente escribir contenido con fprintf

Verás que es muy sencillo escribir contenido a un archivo en C. Vamos a ver dos maneras de apertura del archivo; una sirve para truncar el archivo y escribir el contenido, es decir, sobrescribir.

La segunda forma adjunta o añade el contenido al ya existente.

La función fprintf

Esta función es sencilla. Funciona como printf pero escribe el resultado en un archivo o apuntador a un archivo o tipo FILE. Su sintaxis es la siguiente:

fprintf(archivo, formato, variables del formato...);

Es decir, así como printf tiene la sintaxis:

printf(formato, variables del formato...);

Lo mismo pasa con fprintf. Por ejemplo, para escribir una cadena sería:

fprintf(archivo, "Hola mundo");

Como no hay especificadores de formato en la cadena, no debemos pasar variables de formato. En cambio, en el siguiente caso sí:

fprintf(archivo, "La edad es %d y el género es %s", 23, "M");

En este caso como usamos %d y %s tuvimos que poner los valores; si no hay especificadores de formato no es necesario pasar los últimos argumentos.

Los modos de apertura

Existen varios modos de apertura; ya vimos por ejemplo el modo para leer un archivo. Para escribir contenido vamos a ver dos:

  • w: sobrescribir el contenido
  • a+: agregar el contenido

Es decir, con w se elimina todo el contenido del archivo y se agrega el nuevo. En cambio con a+ se adjunta el nuevo contenido al ya existente.

Nota: ambos modos crean el archivo si no existe

Escribir archivo con C

Una vez que hemos explicado los modos y la función, vamos a ver el ejemplo de código. En este caso abrimos el archivo con fopen, y si no se regresa NULL entonces le escribimos contenido.

#include <stdio.h>

/**
 * Escribir un archivo con C, usando las funciones
 * fopen, fclose y fprintf
 *
 * @author parzibyte
 * https://parzibyte.me/blog/
 *
 * */
int main() {
    /*
     * Podemos poner la ruta completa o el nombre, si ponemos
     * solo el nombre entonces se refiere al directorio en donde
     * se ejecuta el programa
     *
     */
    char *nombreArchivo = "archivo.txt";
    char *modo = "w";// w es para sobrescribir, a+ es para añadir al existente
    FILE *archivo = fopen(nombreArchivo, modo);
    // Si por alguna razón el archivo no fue abierto, salimos inmediatamente
    if (archivo == NULL) {
        printf("Error abriendo archivo %s", nombreArchivo);
        return 1;
    }
    /*
     * Escribir el contenido usando fprintf.
     * */
    fprintf(archivo, "Hola mundo, estamos escribiendo en un archivo\n");
    fprintf(archivo, "También podemos formatear números por ejemplo %d\n", 1);
    fprintf(archivo, "¿Saltos de línea? sí\n\n\n");
    fprintf(archivo, "Podemos escribir cualquier cosa como si usáramos printf ;)\n");

    // Al final, cerramos el archivo
    fclose(archivo);
    puts("Contenido escrito correctamente");
    return 0;
}

Es decir, fopen regresa NULL si no se pudo abrir el archivo, ya sea porque no hay permisos, porque el nombre no existe o cosas así.

Después con fprintf escribimos el contenido, podemos invocar a esta función cuantas veces sea necesario; eso sí, al final debemos cerrar el archivo.

En mi caso el archivo resultante es:

Hola mundo, estamos escribiendo en un archivo
También podemos formatear números por ejemplo 1
¿Saltos de línea? sí

Podemos escribir cualquier cosa como si usáramos printf ;)

Probar código para escribir archivo con C

Te invito a ver cómo leer el contenido de un archivo en este post.

Si el post ha sido de tu agrado te invito a que me sigas para saber cuando haya escrito un nuevo post, haya actualizado algún sistema o publicado un nuevo software. Facebook | X | Instagram | Telegram | También estoy a tus órdenes para cualquier contratación en mi página de contacto