In questa guida impareremo come eseguire operazioni di input / output (I / O) su un file utilizzando il linguaggio di programmazione C.
I / O file C – Sommario
1. Apertura di un file
2. Leggere un file
3. Scrittura di un file
4. Chiusura di un file
5. Lettura e scrittura di stringhe in un file
6. Leggere e scrivere file binari in C
Prima di discutere ogni operazione in dettaglio, prendiamo un semplice programma C:
Un semplice programma C per aprire, leggere e chiudere il file
Nel programma sopra, stiamo aprendo un file newfile.txt
in modalità r
, leggendo il contenuto del file e visualizzando sulla console. consente di comprendere in dettaglio ciascuna operazione:
Apertura di un file
fopen()
viene utilizzata per aprire un file.
Sintassi:
FILE pointer_name = fopen ("file_name", "Mode");
pointer_name
può essere qualsiasi scelta.
file_name
è il nome del file che desideri aprire. Specificare qui il percorso completo come “C: \\ myfiles \\ newfile.txt”.
Durante lapertura di un file, è necessario specificare la modalità. La modalità che usiamo per leggere un file è “r “Che è” modalità di sola lettura “.
ad esempio:
FILE *fp;fp = fopen("C:\\myfiles\\newfile.txt", "r");
Lindirizzo del primo carattere è memorizzato in pointer fp
.
Come verificare se il file è stato aperto correttamente?
Se il file non si apre correttamente, al puntatore verrà assegnato un valore NULL, quindi puoi scrivere la logica in questo modo :
Questo codice controllerà se il file è stato aperto correttamente o meno. Se il file non si apre, verrà visualizzato un messaggio di errore allutente.
..FILE fpr;fpr = fopen("C:\\myfiles\\newfile.txt", "r");if (fpr == NULL){ puts("Error while opening file"); exit();}
Varie modalità di apertura dei file:
Il file viene aperto utilizzando la funzione fopen()
, durante lapertura è possibile utilizzare una delle seguenti modalità secondo il requisito.
Modalità “r”: È una modalità di sola lettura, il che significa che se il file viene aperto in modalità r, non ti permetterà di scrivere e modificare il contenuto di esso. Quando fopen()
apre un file con successo, restituisce lindirizzo del primo carattere del file, altrimenti restituisce NULL.
Modalità “w”: è una scrittura solo modalità. La funzione fopen()
crea un nuovo file quando il file specificato non esiste e se non riesce ad aprire il file, restituisce NULL.
Mode ” a ”: utilizzando questa modalità il contenuto può essere aggiunto alla fine di un file esistente. Come la modalità “w”, fopen()
crea un nuovo file se il file non esiste. Allapertura non riuscita restituisce NULL.
Il puntatore del file punta a: ultimo carattere del file .
Modalità “r +”: Questa modalità è uguale alla modalità “r”; tuttavia puoi eseguire varie operazioni sul file aperto in questa modalità. Ti è consentito leggere, scrivere e modificare il contenuto del file aperto in modalità “r +”.
Il puntatore del file punta a: Primo carattere del file.
Modalità “w +”: uguale alla modalità “w” a parte le operazioni che possono essere eseguite; il file può essere letto, scritto e modificato in questa modalità.
Modalità “a +”: come la modalità “a”; puoi leggere e aggiungere i dati nel file, tuttavia la modifica del contenuto non è consentita in questa modalità.
Lettura di un file
Per leggere il file, dobbiamo prima aprirlo usando qualsiasi della modalità, ad esempio se si desidera solo leggere il file, aprirlo in modalità “r”. In base alla modalità selezionata durante lapertura del file, ci è consentito eseguire determinate operazioni sul file.
C Programma per leggere un file
fgetc (): questa funzione legge il carattere dalla posizione corrente del puntatore e dopo averlo letto con successo sposta il puntatore al carattere successivo nel file. Una volta che i puntatori raggiungono la fine del file , questa funzione restituisce EOF (End of File). Abbiamo usato EOF nel nostro programma per determinare la fine del file.
Scrittura su un file
Per scrivere il file, abbiamo deve aprire il file in una modalità che supporta la scrittura. Ad esempio, se apri un file in modalità “r”, non sarai in grado di scrivere il file poiché “r” è la modalità di sola lettura che consente solo la lettura.
Esempio: programma C da scrivere il file
Questo programma chiede allutente di inserire un carattere e scrive quel carattere alla fine del file. Se il file non esiste, questo programma creerà un file con il nome specificato e scriverà il carattere di input nel file.
Chiusura di un file
fclose(fp);
La funzione fclose () viene utilizzata per chiudere un file aperto. Come argomento devi fornire un puntatore al file che vuoi chiudere.
Un esempio per mostrare le operazioni di apertura, lettura, scrittura e chiusura in C
Come leggere / scrivere (I / O) Stringhe nei file – fgets & fputs
Qui discuteremo come leggere e scrivere stringhe in un file.
char *fgets(char *s, int rec_len, FILE *fpr)
s: array di caratteri per memorizzare le stringhe.
rec_len: lunghezza del record di input.
fpr: puntatore al file di input.
Facciamo un esempio:
Esempio per leggere le stringhe da un file nella programmazione C
Nellesempio sopra abbiamo usato la funzione fgets come questa:
fgets(str, 10, fpr)
Qui str rappresenta la stringa (array di char) in cui memorizzi la stringa dopo averla letta dal file.
10 è la lunghezza della stringa che deve essere letto ogni volta.
fpr è un puntatore a un file che verrà letto.
Perché ho usato if (fgets (str, 10, fpr) == NULL come logica per determinare la fine del file?
Negli esempi precedenti abbiamo usato ch == EOF per conoscere la fine del file. Qui abbiamo usato questa logica perché fgets restituisce NULL quando non ci sono più record disponibili per essere letti .
Programma C – Scrittura di una stringa in un file
int fputs ( const char * s, FILE * fpw );
char *s
– Array di char.
FILE *fpw
– Puntatore (di tipo FILE) al file che verrà scritto.
fputs accetta due argomenti –
fputs(str, fpw)
str – str rappresenta larray, in cui è memorizzata la stringa.
fpw – FILE puntatore al file di output, in cui il record deve essere scritto.
Punto da notare sugli fput:
fputs per impostazione predefinita non aggiunge una nuova riga dopo aver scritto ogni record, per farlo manualmente: puoi avere la seguente dichiarazione dopo ogni scrittura nel file.
fputs("\n", fpw);
I / O FILE C per file binari
Finora abbiamo imparato le operazioni sui file sui file di testo, cosa succede se i file sono binari (come il file .exe). I programmi di cui sopra non funzioneranno con i file binari, tuttavia cè una piccola modifica nella gestione dei file binari. La differenza principale è il nome del file & modalità. Capiamo questo con laiuto di un esempio. Supponiamo che io abbia due file binari bin1.exe & bin2.exe – Voglio copiare il contenuto di bin1.exe in bin2.exe:
Esempio: lettura e scrittura di file binari in C
Nota: le modalità di apertura dei file sono “rb” e “wb” invece di “r” & “w” ..