Función de biblioteca C - freopen ()

Descripción

La función de la biblioteca C FILE *freopen(const char *filename, const char *mode, FILE *stream) asocia un nuevo filename con la secuencia abierta dada y al mismo tiempo cierra el archivo antiguo en la secuencia.

Declaración

A continuación se muestra la declaración de la función freopen ().

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

Parámetros

  • filename - Esta es la cadena C que contiene el nombre del archivo que se abrirá.

  • mode- Esta es la cadena C que contiene un modo de acceso a archivos. Incluye -

No Señor. Modo y descripción
1

"r"

Abre un archivo para su lectura. El archivo debe existir.

2

"w"

Crea un archivo vacío para escribir. Si ya existe un archivo con el mismo nombre, su contenido se borra y el archivo se considera como un nuevo archivo vacío.

3

"a"

Se adjunta a un archivo. Las operaciones de escritura agregan datos al final del archivo. El archivo se crea si no existe.

4

"r+"

Abre un archivo para actualizar tanto la lectura como la escritura. El archivo debe existir.

5

"w+"

Crea un archivo vacío para lectura y escritura.

6

"a+"

Abre un archivo para leer y adjuntar.

  • stream - Este es el puntero a un objeto FILE que identifica la secuencia que se volverá a abrir.

Valor devuelto

Si el archivo se volvió a abrir correctamente, la función devuelve un puntero a un objeto que identifica la secuencia o, de lo contrario, se devuelve un puntero nulo.

Ejemplo

El siguiente ejemplo muestra el uso de la función 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);
}

Compilemos y ejecutemos el programa anterior que enviará la siguiente línea a STDOUT porque inicialmente no abrimos stdout -

This text is redirected to stdout

Después de una llamada a freopen(), asocia STDOUT al archivo file.txt, así que todo lo que escribimos en STDOUT que va dentro file.txt. Entonces, el archivofile.txt tendrá el siguiente contenido.

This text is redirected to file.txt

Ahora veamos el contenido del archivo anterior usando el siguiente 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);
}