Scrivi su File in C

Jinku Hu 12 ottobre 2023
  1. Utilizzare la funzione fwrite per scrivere su file in C
  2. Usa la funzione write per scrivere su file in C
Scrivi su File in C

Questo articolo illustrerà più metodi su come scrivere su file in C.

Utilizzare la funzione fwrite per scrivere su file in C

La libreria I/O standard in C fornisce le funzioni principali per la lettura / scrittura dei file, vale a dire fread e fwrite. fwrite richiede quattro argomenti, un puntatore void da cui dovrebbero essere ottenuti i dati, dimensione e numero di elementi di dati al puntatore dato, e un puntatore FILE* per il flusso del file di output.

Notare che il flusso di file dovrebbe essere aperto prima con la funzione fopen, che prende il nome del file con la modalità desiderata e restituisce FILE*. In questo caso, usiamo la modalità w+ per aprire il file in lettura e scrittura. Attenzione però, se il file non esiste, ne viene creato uno nuovo con il nome dato. Successivamente, controlleremo se il puntatore del flusso di file restituito è valido. In caso contrario, stamperà il messaggio di errore corrispondente e uscirà dal programma. Una volta verificato il puntatore del flusso di file, è possibile chiamare la funzione fwrite. Tieni presente che dovresti chiudere il file con la funzione fclose prima che il programma esca.

#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);
}

Usa la funzione write per scrivere su file in C

In alternativa, possiamo usare write, che è una chiamata di funzione conforme a POSIX che scrive il numero di byte specificato nel file a cui fa riferimento il descrittore di file. Notare che un descrittore di file è un numero intero associato ai flussi di file aperti. Per recuperare il descrittore, dovremmo chiamare la funzione open con il percorso del nome del file. La funzione write prende il descrittore di file come primo argomento e il buffer dei dati puntati da void* come secondo. Il terzo argomento è il numero di byte da scrivere nel file, calcolato con la funzione strlen nell’esempio seguente.

#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);
}
Autore: 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

Articolo correlato - C File