Escribir en un archivo en C

Jinku Hu 12 octubre 2023
  1. Usar la función fwrite para escribir en un archivo en C
  2. Usar la función write para escribir en un fichero en C
Escribir en un archivo en C

Este artículo demostrará múltiples métodos sobre cómo escribir en un archivo en C.

Usar la función fwrite para escribir en un archivo en C

La biblioteca estándar de E/S en C proporciona funciones básicas para la lectura/escritura de archivos, concretamente fread y fwrite. La función fwrite toma cuatro argumentos, un puntero void de donde se deben obtener los datos, el tamaño y el número de elementos de datos en el puntero dado, y un puntero FILE* para el flujo de archivos de salida.

Tenga en cuenta que el flujo de archivos debe abrirse primero con la función fopen, que toma el nombre del archivo con el modo deseado y devuelve FILE*. En este caso, usamos el modo w+ para abrir el archivo para leer y escribir. Eso sí, si el fichero no existe, se crea uno nuevo con el nombre dado. A continuación, comprobaremos si el puntero del flujo de archivos devuelto es válido. Si no lo es, se imprimirá el correspondiente mensaje de error y se saldrá del programa. Una vez verificado el puntero del flujo de archivos, se puede llamar a la función fwrite. Tenga en cuenta que debe cerrar el archivo con la función fclose antes de que el programa salga.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

const char* str = "Temporary string to be written to file!";

int main(void) {
  const char* filename = "out.txt";

  FILE* output_file = fopen(filename, "w+");
  if (!output_file) {
    perror("fopen");
    exit(EXIT_FAILURE);
  }

  fwrite(str, 1, strlen(str), output_file);
  printf("Done Writing!\n");

  fclose(output_file);
  exit(EXIT_SUCCESS);
}

Usar la función write para escribir en un fichero en C

Alternativamente, podemos usar write, que es una llamada a una función compatible con POSIX que escribe el número de bytes dado al archivo referido por el descriptor de archivo. Tenga en cuenta que un descriptor de archivo es un número entero asociado a los flujos de archivos abiertos. Para recuperar el descriptor, debemos llamar a la función open con la ruta del nombre del fichero. La función write toma el descriptor de archivo como primer argumento y el buffer de los datos apuntados por el void* como segundo. El tercer argumento es el número de bytes a escribir en el fichero, calculado con la función strlen en el siguiente ejemplo.

#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>

const char* str = "Temporary string to be written to file!";

int main(void) {
  const char* filename = "out.txt";

  int fd = open(filename, O_WRONLY);
  if (fd == -1) {
    perror("open");
    exit(EXIT_FAILURE);
  }

  write(fd, str, strlen(str));
  printf("Done Writing!\n");

  close(fd);
  exit(EXIT_SUCCESS);
}
Autor: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn Facebook

Artículo relacionado - C File