Abriendo archivo con fopen para posteriormente escribir contenido con 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
.
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.
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.
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 contenidoEs 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
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 ;)
Te invito a ver cómo leer el contenido de un archivo en este post.
El día de hoy vamos a ver cómo restablecer la impresora térmica GOOJPRT PT-210 a…
Hoy voy a enseñarte cómo imprimir en una impresora térmica conectada por USB a una…
En este post voy a enseñarte a programar un servidor web en Android asegurándonos de…
En este post te quiero compartir un código de C++ para listar y cancelar trabajos…
Gracias a WebAssembly podemos ejecutar código de otros lenguajes de programación desde el navegador web…
Revisando y buscando maneras de imprimir un PDF desde la línea de comandos me encontré…
Esta web usa cookies.
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