Función de la biblioteca C -freopen()
Biblioteca estándar de C - <stdio.h>
Descripción
Función de la biblioteca CFILE *freopen(const char *filename, const char *mode, FILE *stream)asocia un nuevo nombre de archivofilenamecon el flujo abierto dadostreamcerrando al mismo tiempo el archivo anterior en el flujo.
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 una cadena de C que contiene el nombre del archivo que se va a abrir.
- mode-- Esta es una cadena de C que contiene el modo de acceso al archivo, los modos son los siguientes:
| Modo | Descripción |
|---|---|
| "r" | Abre un archivo para lectura. El archivo debe existir. |
| "w" | Crea un archivo vacío para escritura. Si el nombre del archivo es igual a un archivo existente, se eliminará el contenido del archivo existente y el archivo se considerará como un nuevo archivo vacío. |
| "a" | Añade a un archivo. La operación de escritura añade datos al final del archivo. Si el archivo no existe, se crea. |
| "r+" | Abre un archivo para actualización, se puede leer y escribir. El archivo debe existir. |
| "w+" | Crea un archivo vacío para lectura y escritura. |
| "a+" | Abre un archivo para lectura y adición. |
- stream-- Este es un puntero a un objeto FILE, que identifica el flujo que se va a reabrir.
Valor de retorno
Si el archivo se abre correctamente, la función devuelve un puntero al objeto que identifica el flujo. De lo contrario, devuelve un puntero nulo.
Ejemplo
El siguiente ejemplo demuestra el uso de la función freopen().
#include <stdio.h>
int main ()
{
FILE *fp;
printf("该文本重定向到 stdout\n");
fp = freopen("file.txt", "w+", stdout);
printf("该文本重定向到 file.txt\n");
fclose(fp);
return(0);
}
Compilemos y ejecutemos el programa anterior, esto enviará las siguientes líneas a la salida estándar STDOUT, porque inicialmente no abrimos la salida estándar:
该文本重定向到 stdout
Después de llamar afreopen()freopen(), éste asociará la salida estándar STDOUT al archivofile.txtTodo lo que escribamos en la salida estándar STDOUT se escribirá en file.txt, por lo que el archivo file.txt tendrá el siguiente contenido.
该文本重定向到 file.txt
Ahora usemos el siguiente programa para ver el contenido del archivo anterior:
#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);
}
Otras extensiones