Partilhar via


freopen, _wfreopen

Atribua o ponteiro de um arquivo.Versões mais seguros dessas funções estão disponíveis; 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 a estrutura de FILE .

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 retorna um valor de função do ponteiro de NULL .Se path, mode, ou stream são um ponteiro zero, ou se filename é uma cadeia de caracteres vazia, essas funções chamam o manipulador de parâmetro inválido, como descrito em Validação de parâmetro.Se a execução é permitida continuar, este errno definir funções a EINVAL e a NULLde retorno.

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

Comentários

Versões mais seguros dessas funções existe, consulte freopen_s, _wfreopen_s.

A função de freopen fecha o arquivo atualmente associado com stream e reatribuir o stream o arquivo especificado por path*.*_wfreopen é uma versão de largo- caractere de _freopen; os argumentos de path e de mode a _wfreopen são cadeias de caracteres de largo- caractere._wfreopen e _freopen se comportam de forma idêntica.

Mapeamentos da rotina de Genérico- texto

Rotina de TCHAR.H

_UNICODE & _MBCS não definidos

_MBCS definido

_UNICODE definido

_tfreopen

freopen

freopen

_wfreopen

freopen é normalmente usado para redirecionar os passos arquivos abertos stdin, stdout, e stderr para os arquivos especificados pelo usuário.O novo arquivo associado com stream é aberto com mode*,* que é uma cadeia de caracteres que especifica o tipo de acesso aplicativo para o arquivo, da seguinte maneira:

  • "r"
    Abre ler.Se o arquivo não existe ou não pode ser encontrado, a chamada de freopen falhar.

  • "w"
    Abre um arquivo vazio para gravação.Se o arquivo existe, seu conteúdo são destruídos.

  • "a"
    Escrevendo abre no final do arquivo () sem anexar remova o marcador de EOF antes de gravar novos dados para o arquivo; cria primeiro se o arquivo não existe.

  • "r+"
    Abre para a leitura e gravação.(O arquivo deve existir.)

  • "w+"
    Abre um arquivo vazio para a leitura e gravação.Se o arquivo existe, seu conteúdo são destruídos.

  • "a+"
    Abrir e ler acrescentando; a operação acrescentando inclui a remoção de marcador de EOF antes que os novos dados serem gravados no arquivo e o marcador de EOF é restaurado depois que escrever está completa; cria primeiro se o arquivo não existe.

Use os tipos de "w" e de "w+" com cuidado, como também podem arquivos existentes.

Quando um arquivo é aberto com o tipo de acesso de "a" ou de "a+" , todas as operações de gravação ocorrem no final do arquivo.Embora o ponteiro do arquivo pode ser reposicionado usando fseek ou rewind, o ponteiro do arquivo é movido sempre de volta ao final do arquivo antes que qualquer operação de gravação é executada.Assim, os dados existentes não podem ser substituídos.

O modo de "a" não remove o marcador de EOF antes de acrescentar o arquivo.Após acrescentar ocorreu, o comando de TIPO de MS-DOS mostra somente dados até o marcador de EOF de original e não nenhum dado anexado ao arquivo.O modo de "a+" remove o marcador de EOF antes de acrescentar o arquivo.Após acrescentar, o comando de TIPO de MS-DOS mostra todos os dados no arquivo.O modo de "a+" é necessário acrescentar a um arquivo de fluxo que é encerrado com o marcador de CTRL+Z EOF.

Quando "r+", "w+", ou o tipo de acesso de "a+" são especificados, a leitura e gravação são permitidas (o arquivo é aberto para “atualizar”).No entanto, quando você alternar entre a leitura e gravação, deve haver fsetposinterveniente, fseek, ou uma operação de rebobinação .A posição atual pode ser especificado para a operação de fsetpos ou de fseek , se desejado.Além dos valores anterior, um dos seguintes caracteres pode ser incluído na cadeia de caracteres de mode para especificar o modo de tradução para novas linhas.

  • t
    Abra no modo de texto (traduzido); as combinações de retorno- alimentação de linha de CR-LF carro () são traduzidas em únicos caracteres de (LF) de alimentação de linha na entrada; Os caracteres de LF são traduzidas as combinações de CR-LF na saída.Além disso, CTRL+Z é interpretado como um caractere de final de Arquivo na entrada.Em arquivos abertos ler ou gravar e ler com "a+", a biblioteca em tempo de execução verifica um CTRL+Z no final do arquivo e remova-o, se possível.Isso é feito como usar fseek e ftell para mover um arquivo pode fazer com que fseek se comporta de modo inadequado do final do arquivo.A opção de t é uma extensão do Microsoft que não deve ser usado onde a portabilidade ANSI é desejada.

  • b
    Abra no modo (a binário;) as traduções acima são suprimidas.

Se t ou b não são dados em mode, o modo padrão de translação é definido pela variável global _fmode.Se t ou b são prefixados para o argumento, a função falha e retorna NULL.

Para uma discussão sobre modos de texto e de binário, consulte O modo de texto e binário E/S de arquivos.

Requisitos

Função

Cabeçalho necessário

freopen

<stdio.h>

_wfreopen

<stdio.h> ou <wchar.h>

O console não é suportado em aplicativos de Windows Store .Identificadores padrões de fluxo associadas ao console, stdin, stdout, e stderr, devem ser redirecionada antes que as funções de tempo de execução das C pode usar em aplicativos de Windows Store .Para informações extras de compatibilidade Compatibilidade na introdução, consulte.

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

Equivalência do .NET Framework

Consulte também

Referência

Fluxo de i/O

fclose, _fcloseall

_fdopen, _wfdopen

_fileno

fopen, _wfopen

Open, _wopen

_setmode