Cominciamo con la gestione dei file in C.
Il file header da includere è:
codice:
#include <stdio.h>
//Oppure in stile C++
#include <cstdio>
Ogni variabile "file" sarà un puntatore al tipo "FILE", definito in questo header.
Ad esempio, per dichiarare una variabile FILE:
Prima di eseguire qualsiasi operazione, bisogna "aprire" un file.
Per farlo si usa la funzione fopen() che restituisce un puntatore a FILE.
Il suo prototipo è:
codice:
FILE *fopen(char *nomefile, char *modalità);
nomefile è un puntatore a caratteri (quindi una stringa) che specifica nome e percorso del file.
modalità è anche una stringa che specifica la modalità di apertura del file.
I valori possono essere:
- r - Apre un file di testo in lettura
- w - Crea un file di testo in scrittura
- a - Apre un file in modalità append (aggiunta di dati)
- rb - Apre un file binario in lettura
- wb - Crea un file binario in scrittura
- ab - Crea un file binario in modalità append
- r+ Apre un file di testo in lettura / scrittura
- w+ - Crea un file di testo in lettura/scrittura
- a+ - Crea o Apre un file di testo in mod. append per scrittura / lettura
- r+b - Apre un file binario in lettura / scrittura
- w+b - Crea un file binario in lettura / scrittura
- a+b - mod. append, binario, lettura/scrittura
Questo codice apre in output un file chiamato test:
codice:
FILE *fp;
fp = fopen("C:\\test.txt","w");
Le modalità di apertura testo / binario differiscono di poco.
Quando si finisce di usare un file, se lo chiude con close():
codice:
FILE *fp;
fp = fopen("C:\\test.txt","w");
//Ho finito di usarlo
fclose(fp);
Ma ora passiamo alla scrittura e lettura vera e propria su un file :metallica
Scrittura di un carattere
Prototipo funzione: int putc(int car, FILE *fp);
Uso:
Scrive il carattere car sul file puntato da fp.
codice:
//Scrive '!' su un file
FILE *fp;
fp = fopen("C:\\test.txt","w");
putc('!',fp);
//Ho finito di usarlo
fclose(fp);
Lettura di un carattere
Prototipo funzione: int getc(FILE *fp);
Uso:
Legge un carattere dal file puntato da fp
Esempio:
Legge il primo farattere di un file e lo scrive.
codice:
FILE *fp;
char c;
fp = fopen("C:\\test.txt","w");
c=getc(fp);
printf("%c",c);
fclose(fp);
Lettura di una stringa
Prototipo funzione: char *fgets(char *str, int lunghezza,FILE *fp)
Uso:
Legge lunghezza caratteri dal file puntato da fp e li inserisce in *str.
Quando incontra il carattere di fine riga, termina ugualmente la stringa ma non lo memorizza.
Esempio:
Legge la prima riga (o al limite i primi 255 caratteri) da un file e li scrive.
codice:
FILE *fp;
char str[256];
fp = fopen("C:\\test.txt","r");
fgets(str,256,fp);
puts(str);
fclose(fp);
Determinare la fine di un file
Per vedere, durante la lettura, se si ha raggiunto la fine di un file, si usa la funzione feof();
Prototipo:
codice:
int feof(FILE *fp);
Restituisce il valore logico vero (1) se la fine del file è stata raggiunta.
Esempio:
Legge tutti i caratteri da un file binario e li scrive.
codice:
FILE *fp;
char ch;
fp = fopen("C:\\test.txt","r");
do {
c = getc(fp);
printf("%c",c);
} while (!feof(fp));
fclose(fp);
Cancellazione di file
La funzione da usare è remove()
codice:
int remove(char *nomefile);
cancella irrimediabilmente il file nomefile.
Ora devo andare... alla prossima puntata! :sexpulp: