C++ freopen() 函数
freopen()
函数定义在 <cstdio>
头文件中。
freopen() 函数原型
FILE* freopen( const char* filename, const char* mode, FILE* stream );
freopen
函数首先尝试关闭使用 stream
打开的文件。在文件关闭后,它尝试以 filename
参数指定的文件名(如果不为 null)以及 mode
参数指定的模式打开文件。最后,它将文件与文件流 stream
关联。
如果 filename
是空指针,freopen()
函数尝试重新打开已与 stream
关联的文件。
freopen() 参数
filename
:要打开的新文件。mode
:打开文件的模式。文件访问模式的不同类型如下所示:
不同的文件操作模式
文件访问模式 | 解释 | 如果文件存在 | 如果文件不存在 |
---|---|---|---|
"r" | 以读取模式打开文件 | 从开始读取 | 错误 |
"w" | 以写入模式打开文件 | 清空所有内容 | 创建新文件 |
"a" | 以追加模式打开文件 | 从末尾开始写入 | 创建新文件 |
"r+" | 以读写模式打开文件 | 从开始读取 | 错误 |
"w+" | 以读写模式打开文件 | 清空所有内容 | 创建新文件 |
"a+" | 以读写模式打开文件 | 从末尾开始写入 | 创建新文件 |
stream
:要关联文件名的文件流。
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;
}
当你运行程序时:
**以下内容将写入 test1.txt:**
This is written to test1.txt
**以下内容将写入 test2.txt:**
This is written to test2.txt