Share via


freopen, _wfreopen

Reatribua um ponteiro de arquivo.Versões mais seguras dessas funções estão disponível; consulte 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
    Caminho do novo arquivo.

  • mode
    Tipo de acesso permitido.

  • stream
    Ponteiro para FILE estrutura.

Valor de retorno

Cada uma dessas funções retorna um ponteiro para o arquivo aberto recentemente.Se ocorrer um erro, o arquivo original é fechado e a função retorna um NULL valor do ponteiro. If path, mode, ou stream é um ponteiro nulo, ou se filename é uma seqüência vazia, essas funções chamar o manipulador de parâmetro inválido, conforme descrito em Validação de parâmetro. Se a execução for permitida para continuar, essas funções conjunto errno para EINVAL e retornar NULL.

See _doserrno, errno, _sys_errlist e _sys_nerr para obter mais informações sobre esses e outros, códigos de erro.

Comentários

Versões mais seguras dessas funções existir, consulte freopen_s, _wfreopen_s.

The freopen function closes the file currently associated with stream and reassigns stream to the file specified by path*.* _wfreopen is a wide-character version of _freopen; the path and mode arguments to _wfreopen are wide-character strings._wfreopen e _freopen tenham comportamento idêntico caso contrário.

Mapeamentos de rotina de texto genérica

Rotina TCHAR.H

_UNICODE & _MBCS não definido

_MBCS definido

_UNICODE definido

_tfreopen

freopen

freopen

_wfreopen

freopen normalmente é usado para redirecionar os arquivos pre-opened stdin, stdout, e stderr arquivos especificados pelo usuário. O novo arquivo sistema autônomo sociated com stream é aberto com mode*,* que é um caractere de seqüência de caracteres que especifica o tipo de acesso solicitado para o arquivo sistema autônomo segue:

  • "r"
    Será aberto para leitura.Se o arquivo não existe ou não for encontrado, o freopen Chame falhar.

  • "w"
    Abre um arquivo vazio para gravação.Se existir o arquivo fornecido, seu Sumário será destruído.

  • "a"
    É aberto para gravação no participante do arquivo (acrescentar) sem remover o marcador EOF antes de gravar novos dados para o arquivo; cria o arquivo primeiro se não existir.

  • "r+"
    Será aberto para leitura e gravação.(O arquivo deve existir).

  • "w+"
    Abre um arquivo vazio para ler e gravar.Se existir o arquivo fornecido, seu Sumário será destruído.

  • "a+"
    Será aberto para leitura e acrescentando; acrescentando operação inclui a remoção do marcador EOF antes que novos dados são gravados no arquivo e o marcador EOF é restaurado após a gravação seja concluído; cria o arquivo primeiro se não existir.

Use o "w" e "w+" tipos com cuidado, pois elas podem destruir sistema autônomo arquivos existentes.

Quando um arquivo for aberto com o "a" ou "a+" acesso de tipo, todas as operações ocorrem no participante do arquivo de gravar. Embora o ponteiro do arquivo pode ser reposicionado fseek ou rewind, o ponteiro do arquivo é sempre movido de volta para o participante do arquivo antes de escrever nenhuma operação é executada. Assim, os dados existentes não podem ser substituídos.

The "a" não remove o marcador EOF antes acrescentando o arquivo. Após a ocorrência de acréscimo, o comando MS-DOS TYPE mostra somente dados até o marcador EOF original e não os dados anexados ao arquivo.The "a+" modo irá remover o marcador EOF antes de acrescentá-lo. Após importar, o comando MS-DOS TYPE, mostra todos os dados no arquivo.The "a+" o modo é necessário para acrescentar a um arquivo de fluxo que é encerrado com o marcador EOF CTRL+Z.

Quando o "r+", "w+", ou "a+"tipo de acesso for especificado, tanto leitura e gravação são permitidos (o arquivo é considerado em aberto para "atualização"). No entanto, quando você alterna entre a leitura e gravação, deve haver um intermediárias fsetpos, fseek, or retroceder operação.A posição corrente pode ser especificada para o fsetpos ou fseek operação, se desejado. Juntamente com os valores acima, um dos seguintes caracteres pode ser incluído na mode seqüência de caracteres para especificar o modo de tradução para novas linhas.

  • t
    em em aberto no modo de texto (convertido); de carro (CR-LF) return–linefeed combinações são convertidas em caracteres de avanço de única linha (LF) na entrada; caracteres LF são convertidos em combinações de CR-LF na saída.Além disso, CTRL+Z é interpretado sistema autônomo um caractere de participante de arquivo na entrada.Em arquivos abertos para leitura ou para gravação e leitura de "a+", a biblioteca de time de execução verifica um CTRL+Z no participante do arquivo e remove-lo, se possível. Isso é concluído porque usando fseek e ftell Para mover-se dentro de um arquivo poderá causar fseek se comporte incorretamente no participante do arquivo. The t opção é uma extensão da Microsoft que não deve ser usada onde ANSI portabilidade for desejada.

  • b
    em em aberto no modo binário (não traduzido); as traduções acima são suprimidas.

If t ou b não é fornecido na mode, o modo de tradução padrão é definido pela variável global _fmode.If t ou b tem o prefixo para o argumento, a função falha e retorna NULL.

Para obter uma abordagem de texto e modos de binários, consulte Texto e o modo binário E/s de arquivos.

Requisitos

Função

Cabeçalho necessário

freopen

<stdio.h>

_wfreopen

<stdio.h> ou <wchar.h>

Para obter informações adicionais compatibilidade, consulte Compatibilidade na introdução.

Exemplo

// 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" );
}

successfully reassigned This will go to the file 'freopen.out'

Equivalente do NET Framework

Consulte também

Referência

Fluxo de E/S

fclose, _fcloseall

_fdopen, _wfdopen

_fileno

fopen, _wfopen

_Open, _wopen

_setmode