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.

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.
parzibyte

Programador freelancer listo para trabajar contigo. Aplicaciones web, móviles y de escritorio. PHP, Java, Go, Python, JavaScript, Kotlin y más :) https://parzibyte.me/blog/software-creado-por-parzibyte/

Ver comentarios

  • 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)

    • Hola. Claro, en caso de que sea para el lenguaje C, recomiendo:
      El lenguaje de programación C
      Libro de Brian Kernighan y Dennis Ritchie

Entradas recientes

Desplegar PWA creada con Vue 3, Vite y SQLite3 en Apache

Ya te enseñé cómo convertir una aplicación web de Vue 3 en una PWA. Al…

3 días hace

Arquitectura para wasm con Go, Vue 3, Pinia y Vite

En este artículo voy a documentar la arquitectura que yo utilizo al trabajar con WebAssembly…

3 días hace

Vue 3 y Vite: crear PWA (Progressive Web App)

En un artículo anterior te enseñé a crear un PWA. Al final, cualquier aplicación que…

3 días hace

Errores de Comlink y algunas soluciones

Al usar Comlink para trabajar con los workers usando JavaScript me han aparecido algunos errores…

3 días hace

Esperar promesa para inicializar Store de Pinia con Vue 3

En este artículo te voy a enseñar cómo usar un "top level await" esperando a…

3 días hace

Solución: Apache – Server unable to read htaccess file

Ayer estaba editando unos archivos que son servidos con el servidor Apache y al visitarlos…

4 días hace

Esta web usa cookies.