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
System::IO::FileStream::FileStream