La funzione freopen () in C ++ tenta di aprire un nuovo file con un flusso di file associato a un altro file aperto.
La funzione freopen () è definita nel file di intestazione.
prototipo freopen ()
FILE * freopen (const char * filename, const char * mode, FILE * stream);
La funzione freopen tenta prima di chiudere il file aperto utilizzando stream. Dopo che il file è stato chiuso, tenta di aprire il nome file specificato dall'argomento filename (se non è nullo) nella modalità specificata dall'argomento mode. Infine associa il file al flusso del flusso di file.
Se filename è un puntatore nullo, la funzione freopen () tenta di riaprire il file che è già associato al flusso.
parametri freopen ()
- nomefile: nuovo file da aprire.
- modalità: modalità con cui aprire il file. I diversi tipi di modalità di accesso ai file sono i seguenti:
Modalità di accesso ai file | Interpretazione | Se il file esiste | Se il file non esiste |
---|---|---|---|
"r" | Apre il file in modalità di lettura | Leggi dall'inizio | Errore |
"w" | Apre il file in modalità di scrittura | Cancella tutto il contenuto | Crea nuovo file |
"un" | Apre il file in modalità di aggiunta | Inizia a scrivere dalla fine | Crea nuovo file |
"r +" | Apre il file in modalità di lettura e scrittura | Leggi dall'inizio | Errore |
"w +" | Apre il file in modalità di lettura e scrittura | Cancella tutto il contenuto | Crea nuovo file |
"a +" | Apre il file in modalità di lettura e scrittura | Inizia a scrivere dalla fine | Crea nuovo file |
- stream: il flusso di file a cui associare il nome del file.
freopen () Restituisce il valore
La funzione freopen () restituisce:
- streaming sul successo.
- NULL in caso di errore.
Esempio: come funziona la funzione freopen ()?
#include #include int main() ( FILE* fp = fopen("test1.txt","w"); fprintf(fp,"%s","This is written to test1.txt"); if (freopen("test2.txt","w",fp)) fprintf(fp,"%s","This is written to test2.txt"); else ( printf("freopen failed"); exit(1); ) fclose(fp); return 0; )
Quando esegui il programma:
Quanto segue sarà scritto in test1.txt: Questo è scritto in test1.txt Quanto segue sarà scritto in test2.txt: Questo è scritto in test2.txt