I FILES AD ACCESSO SEQUENZIALE
Lavoreremo con files di testo. I files I files sono aggregati di dati o istruzioni che possono essere acceduti mediante un identificatore comune. Sono memorizzati nelle memorie secondarie e gestiti dal sistema operativo. Lavoreremo con files di testo.
I files In C sono gestiti dalla libreria standard di IO. Il nome di un file è un puntatore alla prima posizione di memoria in cui è allocato il contenuto del file. Un puntatore a file si dichiara come: FILE * fp;
Per aprire un file in C è necessario usare l’istruzione Apertura di un file Per effettuare qualunque operazione di lettura, scrittura o modifica del contenuto di un file è necessario prima di tutto aprirlo (crearlo se non esiste). Per aprire un file in C è necessario usare l’istruzione fp=fopen(‘‘nome_file’’, ‘‘modalità’’);
fp=fopen(‘‘nome_file’’, ‘‘modalità’’); Apertura di un file fp=fopen(‘‘nome_file’’, ‘‘modalità’’); fp è un puntatore al file che ci indicherà il suo inizio. Vale NULL in caso di errore di apertura. nome_file è il nome del file che deve essere indicato con l’estensione. Modalità Codice Azione r read (sola lettura) w write (sola scrittura) a append (aggiunta in coda)
fp=fopen(‘‘prova.txt’’, ‘‘w’’); Apertura di un file ATTENZIONE! fp=fopen(‘‘prova.txt’’, ‘‘w’’); Un file aperto in modalità sola scrittura se non esiste viene creato se esiste viene svuotato del suo contenuto file.c
fp=fopen(‘‘nome_file’’, ‘‘modalità’’); Apertura di un file fp=fopen(‘‘nome_file’’, ‘‘modalità’’); Modalità Codice Azione r+ lettura e scrittura w+ scrittura e lettura a+ lettura e append Ogni operazione di lettura o scrittura su file incrementa di una riga la posizione dell’indicatore di posizione.
fclose(puntatore_a_file); Chiusura di un file I files vengono automaticamente chiusi al termine dell’esecuzione del programma. In caso di necessità è possibile chiudere prima il file attraverso l’istruzione: fclose(puntatore_a_file); E’ bene chiudere il file quando il programma non deve più utilizzarlo.
I files ad accesso sequenziale Nei files ad accesso sequenziale i dati sono acceduti scorrendo tutti i dati finché non viene trovato il dato desiderato. Nei files ad accesso sequenziale i dati inseriti possono essere strutturati in modo diverso e quindi non si crea un sistema omogeneo di record.
I files ad accesso sequenziale feof(puntatore_a_file); La fine dei file è segnalata da EOF (End of File) che, nei diversi SO, corrisponde a diverse sequenze di caratteri. La funzione feof(puntatore_a_file); segnala la fine fisica del file e restituisce VERO (un numero diverso da 0) se il file è finito.
Scrittura file ad accesso sequenziale Dopo aver aperto il file in modalità scrittura o append, è possibile inserire dei dati attraverso la funzione fprintf(punt_a_file, “formato di controllo”, variabile); Lettura file ad accesso sequenziale Dopo aver aperto il file in modalità lettura, è possibile leggere i dati contenuti nel file attraverso la funzione fscanf(punt_a_file, “formato di controllo”, &variabile);
Lettura e scrittura file ad accesso sequenziale Esempio: main() {FILE * fp; char *nome=“Mario”; int voto = 30; if (fp=fopen(“test.txt”,w+)) {fprintf(fp, %s %d, nome, voto); rewind(fp); riporta il puntatore all’inizio del file fscanf(fp, “%s %d”, nome, &voto);} else printf(“Errore in apertura”);}