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'