Função de biblioteca C - freopen ()

Descrição

A função da biblioteca C FILE *freopen(const char *filename, const char *mode, FILE *stream) associa um novo filename com o fluxo aberto fornecido e ao mesmo tempo fecha o arquivo antigo no fluxo.

Declaração

A seguir está a declaração da função freopen ().

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

Parâmetros

  • filename - Esta é a string C contendo o nome do arquivo a ser aberto.

  • mode- Esta é a string C que contém um modo de acesso ao arquivo. Inclui -

Sr. Não. Modo e descrição
1

"r"

Abre um arquivo para leitura. O arquivo deve existir.

2

"w"

Cria um arquivo vazio para gravação. Se já existir um arquivo com o mesmo nome, seu conteúdo será apagado e o arquivo será considerado um novo arquivo vazio.

3

"a"

Anexa a um arquivo. As operações de gravação acrescentam dados no final do arquivo. O arquivo é criado se não existir.

4

"r+"

Abre um arquivo para atualizar leitura e gravação. O arquivo deve existir.

5

"w+"

Cria um arquivo vazio para leitura e gravação.

6

"a+"

Abre um arquivo para leitura e anexação.

  • stream - Este é o ponteiro para um objeto FILE que identifica o fluxo a ser reaberto.

Valor de retorno

Se o arquivo foi reaberto com sucesso, a função retorna um ponteiro para um objeto identificando o fluxo ou então, um ponteiro nulo é retornado.

Exemplo

O exemplo a seguir mostra o uso da função 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);
}

Vamos compilar e executar o programa acima que enviará a seguinte linha em STDOUT porque inicialmente não abrimos stdout -

This text is redirected to stdout

Depois de uma chamada para freopen(), associa STDOUT ao arquivo file.txt, então tudo o que escrevemos em STDOUT que entra file.txt. Então, o arquivofile.txt terá o seguinte conteúdo.

This text is redirected to file.txt

Agora vamos ver o conteúdo do arquivo acima usando o seguinte programa -

#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);
}