Hai bisogno di una maniglia per toccare i dati sul disco. In C, quell’handle è un puntatore restituito da fopen. Si specifica una modalità, si ottiene un puntatore e lo si utilizza per lo streaming di dati in entrata o in uscita. Le modalità più comuni sono “r” per leggere, “w” per scrivere e “a” per aggiungere. Se sbagli, potresti perdere dati o mandare in crash il tuo programma.
Considera un compito semplice: scrivere i numeri da 1 a 10 in un file.
Questo codice apre un file chiamato out utilizzando la modalità “w”. Questa è una scrittura distruttiva. Se out non esiste, il sistema lo crea. Se esiste, il vecchio contenuto viene cancellato e sostituito. La variabile “f” contiene il puntatore del file. Utilizzare questo puntatore per tutte le operazioni successive. Se non è possibile aprire il file (problemi di autorizzazioni, disco pieno o percorso inesistente), “f” diventa “NULL”.
La funzione di output qui è fprintf. Funziona esattamente come printf, ma passi il puntatore al file come primo argomento. Una volta terminato, fclose rilascia la risorsa.
Gestione degli errori dei file in Main
Questo frammento è il primo della serie a restituire un codice di errore da “main”. Quando fopen fallisce, “f” contiene un valore nullo. In C, zero vale falso. Tutto il resto è vero. L’operatore ! inverte la logica booleana.
if (!f) controlla se il puntatore è nullo. È equivalente a “if (f == 0)”, ma il primo è l’idioma standard. Se la condizione è vera, il programma restituisce 1.
Sui sistemi UNIX è possibile verificare questo stato di uscita direttamente dalla riga di comando. Ti dice se lo script o il programma è stato eseguito correttamente o ha colpito un muro. Sapere come individuare tempestivamente questi errori consente di risparmiare ore di debug in seguito.
Perché preoccuparci dei codici di ritorno quando potremmo semplicemente bloccarci? Perché il fallimento controllato è migliore di un comportamento indefinito. È possibile registrare l’errore, avvisare l’utente o riprovare. Lasciare che il programma muoia silenziosamente è un’ingegneria pigra.
La bellezza di questo approccio sta nella sua semplicità. Apri. Controlla tu. Tu scrivi. Chiudi. Nessuna magia. Nessuno stato nascosto. Solo un puntatore e un file.
Ma cosa succede se hai bisogno di leggere quello che hai appena scritto? O aggiungere a un registro esistente senza distruggere la cronologia? La stringa mode cambia tutto. “r” lascia il file intatto. “a” aggiunge alla fine. “w” lo spazza via. Scegli con attenzione.

















