Gestione file C
Un file può essere utilizzato per memorizzare un grande volume di dati persistenti. Come molti altri linguaggi “C” fornisce le seguenti funzioni di gestione dei file,
- Creazione di un file
- Apertura di un file
- Lettura di un file
- Scrittura su un file
- Chiusura di un file
Di seguito sono riportate le funzioni di gestione dei file più importanti disponibili in “C”
funzione | scopo |
fopen () | Creazione di un file o apertura di un file esistente |
fclose () | Chiusura di un file |
fprintf () | Scrittura di un blocco di dati in un file |
fscanf () | Lettura di un blocca i dati da un file |
getc () | Legge un singolo carattere da un file |
putc () | Scrive un singolo carattere in un file |
getw () | Legge un numero intero da un file |
putw () | Scrittura di un numero intero in un file |
fseek () | Imposta la posizione di un puntatore di file in una posizione specificata |
ftell () | Restituisce la posizione corrente di un puntatore a file |
rewind () | Imposta il puntatore a file allinizio di un file |
In questo tutorial imparerai-
- Come creare un file
- Come chiudere un file:
- Scrivere su un file
- Funzione fputc ():
- Funzione fputs ():
- fprintf () Funzione:
- Lettura di dati da un file
- Lettura e scrittura di file interattivi con getc e putc
Come creare un file
Ogni volta che vuoi lavorare con un file, il primo passo è creare un file. Un file non è altro che spazio in una memoria in cui sono archiviati i dati.
Per creare un file in un programma “C” viene utilizzata la seguente sintassi,
FILE *fp;fp = fopen ("file_name", "mode");
Nella sintassi precedente, il file è un struttura dati che è definita nella libreria standard.
fopen è una funzione standard utilizzata per aprire un file.
- Se il file non è presente nel sistema, viene creato e quindi aperto.
- Se un file è già presente nel sistema, viene aperto direttamente utilizzando questa funzione.
fp è un puntatore a file che punta al file di tipo.
Ogni volta che apri o crei un file, devi specificare cosa farai con il file. È possibile creare o aprire un file nella programmazione “C” a scopo di lettura / scrittura. Una modalità viene utilizzata per specificare se si desidera aprire un file per uno degli scopi indicati di seguito. Di seguito sono riportati i diversi tipi di modalità nella programmazione “C” che possono essere utilizzati mentre si lavora con un file.
Modalità file | Descrizione |
r | Apre un file per la lettura. Se un file è in modalità di lettura, nessun dato viene eliminato se un file è già presente su un sistema. |
w | Apri un file per la scrittura. Se un file è in modalità di scrittura, viene creato un nuovo file se un file non esiste affatto. Se un file è già presente su un sistema, tutti i dati allinterno del file vengono troncati e viene aperto per la scrittura scopi. |
a | Apre un file in modalità di aggiunta. Se un file è in modalità di aggiunta, il file viene aperto. Il contenuto allinterno del file non cambia. |
r + | aperto per la lettura e la scrittura dallinizio |
w + | aperto per lettura e scrittura, sovrascrittura di un file |
a + | aperto per lettura e scrittura, aggiunta a file |
Nella sintassi data, il nome del file e la modalità sono specificati come stringhe, quindi devono essere sempre racchiusi tra virgolette doppie.
Esempio:
#include <stdio.h>int main() {FILE *fp;fp = fopen ("data.txt", "w");}
Risultato:
Il file viene creato nella stessa cartella in cui hai salvato il codice .
Puoi specificare il percorso in cui desideri creare il tuo file
#include <stdio.h>int main() {FILE *fp;fp = fopen ("D://data.txt", "w");}
Come chiudere un file
Si dovrebbe sempre chiudere un file ogni volta che le operazioni sul file sono finite. Significa che i contenuti e i collegamenti al file vengono terminati. Ciò previene danni accidentali al file.
“C” fornisce la funzione fclose per eseguire loperazione di chiusura del file. La sintassi di fclose è la seguente,
fclose (file_pointer);
Esempio:
FILE *fp;fp = fopen ("data.txt", "r");fclose (fp);
La fclose funzione accetta un puntatore di file come argomento. Il file associato al puntatore del file viene quindi chiuso con laiuto della funzione fclose.Restituisce 0 se la chiusura è andata a buon fine e EOF (fine del file) se si è verificato un errore durante la chiusura del file.
Dopo aver chiuso il file, lo stesso puntatore al file può essere utilizzato anche con altri file.
Nella programmazione “C”, i file vengono chiusi automaticamente quando il programma viene terminato. Chiudere un file manualmente scrivendo la funzione fclose è una buona pratica di programmazione.
Scrittura su un file
In C, quando scrivi su un file, i caratteri di nuova riga “\ n” devono essere aggiunti esplicitamente.
La libreria stdio offre le funzioni necessarie per scrivere su un file:
- fputc (char, file_pointer): scrive un carattere nel file puntato da file_pointer.
- fputs (str, file_pointer): scrive una stringa nel file puntato da file_pointer.
- fprintf (file_pointer, str, variable_lists): stampa una stringa nel file puntato da file_pointer. La stringa può opzionalmente includere specificatori di formato e un elenco di variabili variabili_liste.
Il programma seguente mostra come eseguire la scrittura su un file:
fputc () Funzione:
Risultato:
Il programma precedente scrive un singolo carattere nel file fputc_test.txt fino a raggiungere il simbolo della riga successiva “\ n” che indica che la frase è stata scritta con successo. Il processo consiste nel prendere ogni carattere dellarray e scriverlo nel file.
- Nel programma sopra, abbiamo creato e aperto un file chiamato fputc_test.txt in modalità di scrittura e dichiara la nostra stringa che verrà scritta nel file.
- Facciamo unoperazione di scrittura carattere per carattere usando il ciclo for e inseriamo ogni carattere nel nostro file fino a quando “\ n “viene incontrato il carattere, quindi il file viene chiuso utilizzando la funzione fclose.
fputs () Funzione:
OUTPUT:
- Nel programma sopra, abbiamo creato e aperto un file chiamato fputs_test.txt in modalità di scrittura.
- Dopo aver eseguito unoperazione di scrittura utilizzando la funzione fputs () scrivendo tre stringhe differenti
- Quindi il file viene chiuso utilizzando la funzione fclose.
fprintf () Funzione:
OUTPUT:
- Nel programma sopra abbiamo creato e aperto un file chiamato fprintf_test.txt in modalità di scrittura.
- Dopo che unoperazione di scrittura è stata eseguita utilizzando la funzione fprintf () scrivendo una stringa, il file viene chiuso utilizzando la funzione fclose.
Lettura di dati da un file
Ci sono tre diverse funzioni dedicate alla lettura dei dati da un file
- fgetc (file_pointer): restituisce il carattere successivo dal file puntato dal puntatore del file. Quando viene raggiunta la fine del file, lEOF viene rispedito.
- fgets (buffer, n, file_pointer): legge n-1 caratteri dal file e memorizza la stringa in un buffer in cui il carattere NULL “\ 0” viene aggiunto come ultimo carattere.
- fscanf (file_pointer, conversion_specifiers, variable_adresses): viene utilizzato per analizzare e analizzare i dati. Legge i caratteri dal file e assegna linput a un elenco di puntatori di variabili variabile_adresses utilizzando gli specificatori di conversione. Tieni presente che come con scanf, fscanf interrompe la lettura di una stringa quando viene incontrato uno spazio o una nuova riga.
Il seguente programma mostra la lettura dal file fputs_test.txt usando fgets (), fscanf () e Funzioni fgetc () rispettivamente:
Risultato:
- Nel programma sopra, abbiamo aperto il file chiamato “fprintf_test.txt” che era stato precedentemente scritto utilizzando la funzione fprintf (), e contiene la stringa “Learning C with Guru99”. Lo leggiamo usando la funzione fgets () che legge riga per riga dove la dimensione del buffer deve essere sufficiente per gestire lintera riga.
- Riapriamo il file per reimpostare il file del puntatore in modo che punti allinizio del file. Crea varie stringhe variabili per gestire ogni parola separatamente. Stampa le variabili per visualizzarne il contenuto. Fscanf () viene utilizzato principalmente per estrarre e analizzare i dati da un file.
- Riapri il file per ripristinare il file del puntatore in modo che punti allinizio del file. Leggi i dati e stampali dal file carattere per carattere utilizzando la funzione getc () fino a quando non viene rilevata listruzione EOF
- Dopo aver eseguito unoperazione di lettura del file utilizzando diverse varianti, abbiamo nuovamente chiuso il file utilizzando la funzione fclose.
Lettura e scrittura di file interattivi con getc e putc
Queste sono le operazioni sui file più semplici. Getc sta per get character e putc sta per put character. Queste due funzioni vengono utilizzate per gestire un solo carattere alla volta.
Il seguente programma mostra le funzioni di gestione dei file nella programmazione “C”:
Risultato:
- Nel programma precedente noi hanno creato e aperto un file chiamato demo in modalità di scrittura.
- Dopo aver eseguito unoperazione di scrittura, il file viene chiuso utilizzando la funzione fclose.
- Abbiamo nuovamente aperto un file che ora contiene dati in modalità di lettura. Un ciclo while verrà eseguito fino a quando non viene trovato leof. Una volta trovata la fine del file, loperazione verrà terminata e i dati verranno visualizzati utilizzando la funzione printf.
- Dopo aver eseguito unoperazione di lettura, il file viene nuovamente chiuso utilizzando la funzione fclose.
Riepilogo
- Un file è uno spazio in una memoria in cui sono archiviati i dati.
- “C “La programmazione fornisce varie funzioni per gestire un file.
- Un meccanismo di manipolazione dei file è chiamato gestione dei file.
- Un file deve essere aperto prima di eseguire operazioni su di esso.
- Un file può essere aperto in modalità di lettura, scrittura o aggiunta.
- Le funzioni getc e putc vengono utilizzate per leggere e scrivere un singolo carattere.
- la funzione fscanf () permette di leggere e analizzare i dati da un file
- Possiamo leggere (usando la funzione getc) un intero file eseguendo un ciclo per coprire tutto il file finché non si incontra lEOF
- Possiamo scrivere su un file dopo aver creato il suo nome, usando la funzione fprintf () e deve avere il newl ine carattere alla fine del testo della stringa.