freopen() 函数定义在 <cstdio> 头文件中。
freopen() 原型
FILE* freopen( const char* filename, const char* mode, FILE* stream );
freopen 函数首先尝试关闭由 stream 打开的文件。关闭文件后,它会尝试以 mode 参数指定的模式打开由 filename 参数指定的filename(如果它不是null)。最后,它将文件与文件流 stream 关联起来。
如果 filename 是一个空指针,freopen() 函数会尝试重新打开已经与 stream 关联的文件。
freopen() 参数
- filename: 新打开的文件。
- mode: 打开文件的模式。不同类型的文件访问模式如下:
文件访问模式 | 解释 | 如果文件存在 | 如果文件不存在 |
---|---|---|---|
"r" | 以读模式打开文件 | 从头开始读取 | 错误 |
"w" | 以写模式打开文件 | 擦除所有内容 | 创建新文件 |
“a” | 以追加模式打开文件 | 从末尾开始写入 | 创建新文件 |
"r+" | 以读写模式打开文件 | 从头开始读取 | 错误 |
"w+" | 以读写模式打开文件 | 擦除所有内容 | 创建新文件 |
"a+" | 以读写模式打开文件 | 从末尾开始写入 | 创建新文件 |
- stream: 要将 filename 关联到的文件流。
freopen()返回值
freopen() 函数返回
- 成功时返回 stream。
- 失败时返回 NULL。
示例:freopen() 函数如何工作?
#include <cstdio>
#include <cstdlib>
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;
}
运行程序时
The following will be written to test1.txt: This is written to test1.txt The following will be written to test2.txt: This is written to test2.txt
另请阅读