Funzione libreria C - freopen ()

Descrizione

La funzione di libreria C. FILE *freopen(const char *filename, const char *mode, FILE *stream) associa un nuovo filename con il flusso aperto dato e allo stesso tempo chiude il vecchio file nel flusso.

Dichiarazione

Di seguito è riportata la dichiarazione per la funzione freopen ().

FILE *freopen(const char *filename, const char *mode, FILE *stream)

Parametri

  • filename - Questa è la stringa C contenente il nome del file da aprire.

  • mode- Questa è la stringa C contenente una modalità di accesso ai file. Include:

Sr.No. Modalità e descrizione
1

"r"

Apre un file per la lettura. Il file deve esistere.

2

"w"

Crea un file vuoto per la scrittura. Se esiste già un file con lo stesso nome, il suo contenuto viene cancellato e il file viene considerato come un nuovo file vuoto.

3

"a"

Aggiunge a un file. Le operazioni di scrittura aggiungono i dati alla fine del file. Il file viene creato se non esiste.

4

"r+"

Apre un file per aggiornare sia la lettura che la scrittura. Il file deve esistere.

5

"w+"

Crea un file vuoto sia per la lettura che per la scrittura.

6

"a+"

Apre un file per la lettura e l'aggiunta.

  • stream - Questo è il puntatore a un oggetto FILE che identifica il flusso da riaprire.

Valore di ritorno

Se il file è stato riaperto correttamente, la funzione restituisce un puntatore a un oggetto che identifica il flusso oppure viene restituito un puntatore nullo.

Esempio

L'esempio seguente mostra l'utilizzo della funzione freopen ().

#include <stdio.h>

int main () {
   FILE *fp;

   printf("This text is redirected to stdout\n");

   fp = freopen("file.txt", "w+", stdout);

   printf("This text is redirected to file.txt\n");

   fclose(fp);
   
   return(0);
}

Compiliamo ed eseguiamo il programma sopra che invierà la seguente riga su STDOUT perché inizialmente non abbiamo aperto stdout -

This text is redirected to stdout

Dopo una chiamata a freopen(), associa STDOUT al file file.txt, quindi qualunque cosa scriviamo su STDOUT che va dentro file.txt. Quindi, il filefile.txt avrà il seguente contenuto.

This text is redirected to file.txt

Vediamo ora il contenuto del file sopra utilizzando il seguente programma:

#include <stdio.h>

int main () {
   FILE *fp;
   int c;

   fp = fopen("file.txt","r");
   while(1) {
      c = fgetc(fp);
      if( feof(fp) ) {
         break ;
      }
      printf("%c", c);
   }
   fclose(fp);
   return(0);
}