跳到主要内容

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