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
.

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 contenidoa+
: 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.