Note

La manipolazione dei file in C avviene utilizzando la libreria <stdio.h>, che fornisce funzioni per aprire, leggere, scrivere e chiudere i file.
Un file in C è gestito attraverso un puntatore di tipo FILE*, che viene utilizzato nelle varie operazioni.

Le operazioni principali sui file includono:

  • Apertura di un file con fopen(), specificando il percorso e la modalità di apertura
  • Lettura e scrittura mediante funzioni come fscanf(), fprintf(), fgets(), fputs(), fread(), fwrite()
  • Chiusura di un file con fclose() per liberare le risorse
  • Gestione degli errori tramite il controllo del puntatore FILE* e l’uso di feof() o ferror().

Example

#include <stdio.h>
 
int main() {
  FILE *file = fopen("testo.txt", "w");  /* Apertura del file in modalità scrittura */
  if (file == NULL) {
  	printf("Errore nell'apertura del file.\n");
  	return 1;
  	}
  	
  	fprintf(file, "Scrivo questo testo nel file.\n");  /* Scrittura nel file */
  	fclose(file);  /* Chiusura del file
  	
  	return 0;
  	 }
  	 ```

Modalità di Apertura

Note

fopen() accetta due parametri: il nome del file e la modalità di apertura.
Ecco alcune modalità comuni:

  • "r" → Apre un file per lettura (deve esistere)
  • "w" → Crea un file per scrittura (sovrascrive se esiste)
  • "a" → Apre un file in modalità aggiunta (append)
  • "r+" → Apre un file per lettura e scrittura
  • "w+" → Crea un file per lettura e scrittura (cancella se esiste)
  • "a+" → Apre o crea un file per lettura/scrittura, mantenendo il contenuto

Example

#include <stdio.h>
 
int main() {
  FILE *file = fopen("testo.txt", "r");  /* Apertura in modalità lettura */
  if (file == NULL) {
  	printf("Errore nell'apertura del file.\n");
  	return 1;
  	}
  	
  	char riga[100];
  	while (fgets(riga, sizeof(riga), file) != NULL) {  /* Lettura riga per riga */
  	printf("%s", riga);
  	}
  	
  	fclose(file);
  	return 0;
  	 }
  	 ```

Lettura e Scrittura Binaria

Note

Per lavorare con dati binari si usano fread() e fwrite(), che leggono e scrivono blocchi di dati.

Example

#include <stdio.h>
 
typedef struct {
  char nome[20];
  int eta;
   } Persona;
  
   int main() {
  Persona p = {"Mario", 30};
  FILE *file = fopen("dati.bin", "wb");  /* Scrittura binaria */
  fwrite(&p, sizeof(Persona), 1, file);
  fclose(file);
  
  return 0;
   }