Smetti di usare fscanf per leggere file di testo. È una trappola. A meno che i tuoi dati non siano formattati perfettamente fino all’ultimo spazio bianco, fscanf si bloccherà, si disallineerà e ti lascerà il debug di un incubo. Il percorso affidabile? Apri con la modalità r, usa fgets per catturare intere righe e analizzare i pezzi che ti servono in seguito.
Ecco il modo più semplice per leggere un file e scaricarne il contenuto sullo schermo senza mandare in crash il sistema.
La logica qui è ingannevolmente semplice. fgets legge una riga, fino a 1.000 caratteri in questo buffer, e restituisce NULL solo quando raggiunge l’indicatore di fine file. Stampa direttamente su stdout tramite printf. Noti la mancanza di \n nella stringa di formato printf? È intenzionale. fgets aggiunge automaticamente il carattere di nuova riga alla fine della stringa che legge. Se aggiungi il tuo \n, ottieni una spaziatura doppia. Ancora più importante, se una riga è più lunga di 1.000 caratteri, fgets non aggiungerà il ritorno a capo. Puoi rilevare questa lettura incompleta controllando la mancanza di \n, un trucco utile se hai a che fare con dati non validi.
“Usa fgets per leggere ogni riga e poi analizzare i pezzi che ti servono.”
C’è un errore critico che fa inciampare anche gli sviluppatori esperti. Non digitare fclose come close. Il compilatore non lo prenderà. La funzione “chiudi” esiste e, per piccoli script che aprono e chiudono un file solo una o due volte, potrebbe funzionare bene. È una bugia.
Se lo esegui all’interno di un ciclo, close non riesce a rilasciare correttamente le risorse del file sottostante. Alla fine, il tuo programma esaurisce gli handle di file disponibili o lo spazio di memoria e si blocca gravemente. “fclose” è l’unico modo corretto per chiudere la porta. “chiudi” è una scorciatoia che porta a un mattone. Attenersi alla libreria standard. Tieni controllati i buffer. Non lasciare che un errore di battitura ti mangi la memoria.

























