C++ freopen()

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

另请阅读

你觉得这篇文章有帮助吗?

我们的高级学习平台,凭借十多年的经验和数千条反馈创建。

以前所未有的方式学习和提高您的编程技能。

试用 Programiz PRO
  • 交互式课程
  • 证书
  • AI 帮助
  • 2000+ 挑战