Share via


freopen, _wfreopen

Reasigne un puntero de archivo.Versiones más seguras de estas funciones están disponibles; vea freopen_s, _wfreopen_s.

FILE *freopen( 
   const char *path,
   const char *mode,
   FILE *stream 
);
FILE *_wfreopen( 
   const wchar_t *path,
   const wchar_t *mode,
   FILE *stream 
);

Parámetros

  • path
    Ruta de acceso del nuevo archivo.

  • mode
    Tipo de acceso permitido.

  • stream
    Puntero a la estructura de FILE.

Valor devuelto

Cada una de estas funciones devuelve un puntero al archivo que se acaba de abrir.Si se produce un error, el archivo original se cierra y la función devuelve un valor de puntero de NULL.Si path, mode, o stream es un puntero null, o si filename es una cadena vacía, estas funciones se invoca el controlador no válido de parámetro, tal y como se describe en Validación de parámetros.Si la ejecución puede continuar, este errno establecido funciones a EINVAL y a NULL return.

Vea _doserrno, errno, _sys_errlist, y _sys_nerr para obtener más información al respecto, y otro, códigos de error.

Comentarios

Versiones más seguras de estas funciones existen, vea freopen_s, _wfreopen_s.

La función de freopen cierra el archivo asociado actualmente a stream y reasigna stream al archivo especificado por path*.*_wfreopen es una versión con caracteres anchos de _freopen; los argumentos de path y de mode a _wfreopen son cadenas de caracteres._wfreopen y _freopen se comportan exactamente igual de otra manera.

Asignaciones de la rutina de Genérico- texto

Rutina de TCHAR.H

_UNICODE y _MBCS no definidos

_MBCS definido

_UNICODE definido

_tfreopen

freopen

freopen

_wfreopen

freopen se utiliza normalmente para redirigir los archivos pre- abiertos stdin, stdout, y stderr a los archivos especificados por el usuario.El nuevo archivo asociado a stream se abre con mode*,* una cadena de caracteres que especifica el tipo de acceso solicitado para el archivo, como sigue:

  • "r"
    Abrir para leer.Si el archivo no existe o no se encuentra, la llamada de freopen falla.

  • "w"
    Abra un archivo vacío para escribir.Si existe el archivo dado, se destruyen su contenido.

  • "a"
    Abrir para escribir al final del archivo (el anexar) sin quitar el marcador EOF antes de escribir nuevos datos al archivo; crea el archivo primero si no existe.

  • "r+"
    Abrir para la lectura y escritura.(El archivo no debe existir.)

  • "w+"
    Abra un archivo vacío para la lectura y escritura.Si existe el archivo dado, se destruyen su contenido.

  • "a+"
    Abrir para leer y anexar; la operación que anexa incluye la eliminación del marcador EOF antes de que los nuevos datos se escribe en el archivo y se restablece el marcador EOF después de que se complete la escritura; crea el archivo primero si no existe.

Utilice los tipos de "w" y de "w+" con cuidado, como pueden destruir archivos existentes.

Si se abre con el tipo de acceso de "a" o de "a+", todas las operaciones de escritura tienen lugar al final del archivo.Aunque el puntero de archivo se puede cambiar de posición mediante fseek o rewind, el puntero de archivo se mueve siempre al final del archivo antes de que se realice cualquier operación de escritura.Así, los datos existentes no pueden sobrescribirse.

El modo de "a" no quita el marcador EOF antes de anexar al archivo.Después de anexar ha producido, el comando VARIANT de MS-DOS solo muestra datos hasta el marcador original EOF y hay datos anexados al archivo.El modo de "a+" quita el marcador EOF antes de anexar al archivo.Después de anexar, el comando VARIANT de MS-DOS muestra todos los datos del archivo.Requieren el modo de "a+" para anexar a un archivo de la secuencia que se terminan con el marcador de CTRL+Z EOF.

Cuando se especifica "r+", "w+", o el tipo de acceso de "a+", se permiten la lectura y escritura (el archivo se abre para “update”).Sin embargo, cuando cambie de lectura y escritura, debe haber fsetpos intermedia, fseek, u operación de rebobinado.La posición actual se puede especificar para la operación de fsetpos o de fseek, si lo desea.Además de los valores anteriores, uno de los siguientes caracteres se puede incluir en la cadena de mode para especificar el de modalidad de traducción para las nuevas líneas.

  • t
    Abra en modo de texto (traducido); combinaciones de retorno- avance de línea de carro (CR-LF) se convierten en los únicos caracteres de (LF) avance de línea en entrada; Los caracteres de LF se traducen a las combinaciones de CR-LF en la salida.También, CTRL+Z se interpretan como un final de archivo de entrada.En archivos abierto para leer o escribir y leer con "a+", la biblioteca en tiempo de ejecución un CTRL+Z al final del archivo y colóquelo, si es posible.Se hace esto porque utilizar fseek y ftell para desplazarse en un archivo puede hacer fseek para comportarse incorrectamente cerca del final del archivo.La opción de t es una extensión de Microsoft que no debe utilizarse donde desee la portabilidad de ANSI.

  • b
    Abra en modo (sin traducir) binario; se suprimen las conversiones anteriores.

Si t o b no se proporcione en mode, el de modalidad de traducción predeterminado está definida por la variable global _fmode.Si t o b precedido el argumento, se produce un error en la función y devuelve NULL.

Para obtener una explicación de los modos de texto y el binario, vea E/S de archivo de texto y el modo binario.

Requisitos

Función

Encabezado necesario

freopen

<stdio.h>

_wfreopen

<stdio.h> o <wchar.h>

La consola no se admite en las aplicaciones de Tienda Windows.Los identificadores estándar de la secuencia asociados a la consola, stdin, stdout, y stderr, deben redirigir antes de que las funciones en tiempo de ejecución de C pueden utilizarlos en las aplicaciones de Tienda Windows.Para obtener información adicional de compatibilidad, vea Compatibilidad en la Introducción.

Ejemplo

// crt_freopen.c
// compile with: /W3
// This program reassigns stderr to the file
// named FREOPEN.OUT and writes a line to that file.
#include <stdio.h>
#include <stdlib.h>

FILE *stream;

int main( void )
{
   // Reassign "stderr" to "freopen.out": 
   stream = freopen( "freopen.out", "w", stderr ); // C4996
   // Note: freopen is deprecated; consider using freopen_s instead

   if( stream == NULL )
      fprintf( stdout, "error on freopen\n" );
   else
   {
      fprintf( stdout, "successfully reassigned\n" ); fflush( stdout );
      fprintf( stream, "This will go to the file 'freopen.out'\n" );
      fclose( stream );
   }
   system( "type freopen.out" );
}
  

Equivalente en .NET Framework

Vea también

Referencia

E/S de la secuencia

fclose, _fcloseall

_fdopen, _wfdopen

_fileno

fopen, _wfopen

_open, _wopen

_setmode