A função freopen () em C ++ tenta abrir um novo arquivo com um fluxo de arquivo associado a outro arquivo aberto.
A função freopen () é definida no arquivo de cabeçalho.
protótipo freopen ()
FILE * freopen (const char * filename, modo const char *, FILE * stream);
A função freopen primeiro tenta fechar o arquivo aberto usando stream. Depois que o arquivo é fechado, ele tenta abrir o nome do arquivo especificado pelo argumento filename (se não for nulo) no modo especificado pelo modo do argumento. Finalmente, ele associa o arquivo ao fluxo de fluxo de arquivos.
Se filename for um ponteiro nulo, a função freopen () tenta reabrir o arquivo que já está associado ao stream.
Parâmetros freopen ()
- nome do arquivo: Novo arquivo a ser aberto.
- modo: Modo para abrir o arquivo. Os diferentes tipos de modo de acesso a arquivos são os seguintes:
Modo de acesso ao arquivo | Interpretação | Se o arquivo existir | Se o arquivo não existe |
---|---|---|---|
"r" | Abre o arquivo em modo de leitura | Leia desde o início | Erro |
"W" | Abre o arquivo no modo de gravação | Apague todo o conteúdo | Criar novo arquivo |
"uma" | Abre o arquivo no modo anexar | Comece a escrever a partir do final | Criar novo arquivo |
"r +" | Abre o arquivo em modo de leitura e gravação | Leia desde o início | Erro |
"w +" | Abre o arquivo em modo de leitura e gravação | Apague todo o conteúdo | Criar novo arquivo |
"a +" | Abre o arquivo em modo de leitura e gravação | Comece a escrever a partir do final | Criar novo arquivo |
- stream: O stream de arquivo ao qual associar o nome do arquivo.
freopen () Valor de retorno
A função freopen () retorna:
- fluxo no sucesso.
- NULL em caso de falha.
Exemplo: Como funciona a função freopen ()?
#include #include int main() ( FILE* fp = fopen("test1.txt","w"); fprintf(fp,"%s","This is written to test1.txt"); if (freopen("test2.txt","w",fp)) fprintf(fp,"%s","This is written to test2.txt"); else ( printf("freopen failed"); exit(1); ) fclose(fp); return 0; )
Quando você executa o programa:
O seguinte será escrito em test1.txt: Este é escrito em test1.txt O seguinte será escrito em test2.txt: Este é escrito em test2.txt