Escribir archivo con C

Escribir archivo con C usando fprintf

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.

Escribir archivo con C
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.

Estoy aquí para ayudarte 🤝💻


Estoy aquí para ayudarte en todo lo que necesites. Si requieres alguna modificación en lo presentado en este post, deseas asistencia con tu tarea, proyecto o precisas desarrollar un software a medida, no dudes en contactarme. Estoy comprometido a brindarte el apoyo necesario para que logres tus objetivos. Mi correo es parzibyte(arroba)gmail.com, estoy como@parzibyte en Telegram o en mi página de contacto

No te pierdas ninguno de mis posts 🚀🔔

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.

2 comentarios en “Escribir archivo con C usando fprintf”

  1. hola, espero que se encuentre muy bien.
    No tengo ninguna duda, pero quisiera que me recomendara algunos libros para adentrarme mejor en el mundo de la programación(comencé hace 4 meses)

Dejar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *