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