Andrea Falla
0
01 Apr, 2022
Andrea Falla
0
01 Apr, 2022
Tra i tanti tipi di archivi esistenti, sono detti "binari" quei file la cui rappresentazione del contenuto, organizzato per record, si basa pienamente sull'uso di sequenze di byte di 1 e 0 (da qui "binario") e sono perciò non comprensibili dall'uomo, dunque la loro interpretazione viene lasciata al calcolatore.
Tutto ciò di cui abbiamo bisogno nel linguaggio C per farne buon utilizzo è la libreria standard di input e output stdio.h. È bene specificare le poche e semplici funzionalità che tratteremo riguardo la gestione dei file sopracitati: apertura, lettura, scrittura e chiusura, ma non solo.
Fondamentale è la comprensione delle variabili in gioco, tra cui almeno un puntatore di tipo FILE, struttura di cui non è necessario conoscere il contenuto per essere utilizzata, che sarà il nostro descrittore all'interno del file in cui operiamo.
La funzione che ci permette di aprire il file è fopen, la cui sintassi è:
Restituisce un indirizzo utilizzabile da un puntatore a FILE che ci dà la possibilità di effettuare ogni tipo di azione sul nostro documento grazie ai parametri che vi passiamo, quali la stringa nomeFile, a cui va sostituito il nome del file in cui vogliamo lavorare, e la stringa modalita, al cui posto va inserita la modalità di apertura tra doppi apici ("): -rb (read binary): posiziona il puntatore all'inizio del file esistente e abilita la possibilità di lettura. La modalità rb+ permette anche la scrittura; -wb (write binary): crea un file o sovrascrive il contenuto di uno esistente e abilita la possibilità di scrittura. La modalità wb+ permette anche la lettura; -ab (append binary): posiziona il puntatore in fondo al file esistente (o ne crea uno) e abilità la possibilità di prosecuzione del contenuto, quindi scrittura. La modalità ab+ permette anche la lettura. In caso di errori di apertura, per esempio causa inesistenza del file, la fopen restituisce NULL. N.B. un file aperto in modalità solo lettura, per esempio, perché ci si possa scrivere dentro va chiuso e riaperto in modalità scrittura!!
La funzione che ci permette di leggere il file è fread, la cui sintassi è:
-(size_t è una variabile numerica grande 64bit / 8Byte); Restituisce il numero di elementi letti con successo, cosa utilizzabile per un controllo sulla buona riuscita dell'operazione. I parametri necessari sono quattro, che nello specifico sono: -s - è un puntatore alla variabile in cui vogliamo salvare i valori letti, è perciò necessario passarvi l'indirizzo della suddetta variabile; -dimensione - è la grandezza in byte di ogni record che leggiamo; -nLetture - è il numero di elementi che leggiamo di grandezza dimensione; -fp - è il puntatore al FILE che stiamo leggendo.
La funzione che ci permette di scrivere il file è fwrite, la cui sintassi è:
-(size_t è una variabile numerica grande 64bit / 8Byte); Restituisce il numero di elementi scritti con successo, cosa utilizzabile per un controllo sulla buona riuscita dell'operazione. I parametri necessari sono quattro, che nello specifico sono: -s - è un puntatore alla variabile da cui vogliamo pescare i valori da scrivere, è perciò necessario passarvi l'indirizzo della suddetta variabile; -dimensione - è la grandezza in byte di ogni record che scriviamo; -nScritture - è il numero di elementi che scriviamo di grandezza dimensione; -fp - è il puntatore al FILE in cui stiamo scrivendo.
La funzione che ci permette di chiudere il file è fclose, la cui sintassi è:
Restituisce 0 se il file è stato chiuso con successo e l'unico parametro da inserire è il puntatore a FILE fp. È fondamentale come passaggio per non causare problemi di inaccessibilità al file aperto, nel caso in cui qualche altro processo ne debba disporre.
La funzione che ci permette di spostarci liberamente nel file è fseek, la cui sintassi è:
Restituisce 0 se lo spostamento è stato effettuato con successo. Necessita di tre parametri: -fp - è il puntatore a FILE in cui ci stiamo spostando -offset - è il numero di byte di cui ci vogliamo spostare dalla posizione corrente -posizione - rappresentato da tre costanti, indica la posizione da cui vogliamo spostarci: 0 - inizio del file; 1 - posizione corrente; 2 - fine del file.
La funzione che ci dice dove siamo nel file è ftell, la cui sintassi è:
Restituisce il numero di byte di distanza dall'inizio del file e l'unico parametro che richiede è il puntatore al FILE fp.
La funzione che ci permette di capire se siamo alla fine del file è feof, la cui sintassi è:
Restituisce 1 se il puntatore ha raggiunto la fine del file, cosa che capisce grazie al flag End-of-File (se alzato), e l'unico parametro che richiede è il puntatore al FILE fp.
Sono uno studente delle superiori. Ho approcciato l'informatica con la scuola, mentre la scrittura è una passione nata con il tempo.