C++ 中的freopen() 函数尝试使用与另一个打开的文件相关联的文件流打开一个新文件。
freopen() 函数在<cstdio> 头文件中定义。
freopen()原型
FILE* freopen( const char* filename, const char* mode, FILE* stream );
freopen 函数首先尝试关闭使用 stream
打开的文件。文件关闭后,它会尝试以参数 mode
指定的模式打开参数 filename
指定的文件名(如果它不为空)。最后,它将文件与文件流 stream
相关联。
如果 filename
是空指针,则 freopen() 函数会尝试重新打开已与 stream
关联的文件。
参数:
filename
:要打开的新文件。mode
:打开文件的模式。不同类型的文件访问方式如下:
文件访问模式 | 解释 | 如果文件存在 | 如果文件不存在 |
---|---|---|---|
"r" | 以读取模式打开文件 | 从头开始阅读 | Error |
"w" | 以写入模式打开文件 | 删除所有内容 | 创建新文件 |
"a" | 以追加模式打开文件 | 从头开始写 | 创建新文件 |
"r+" | 以读写模式打开文件 | 从头开始阅读 | Error |
"w+" | 以读写模式打开文件 | 删除所有内容 | 创建新文件 |
"a+" | 以读写模式打开文件 | 从头开始写 | 创建新文件 |
stream
:要关联文件名的文件流。
返回:
freopen() 函数返回:
- 流成功。
- 失败时为 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
相关用法
- C++ free()用法及代码示例
- C++ frexp()用法及代码示例
- C++ fread()用法及代码示例
- C++ fcvt()用法及代码示例
- C++ fwscanf()用法及代码示例
- C++ fmax()用法及代码示例
- C++ fdim()用法及代码示例
- C++ fmin()用法及代码示例
- C++ fetestexcept()用法及代码示例
- C++ forward_list::unique()用法及代码示例
- C++ forward_list::emplace_front()用法及代码示例
- C++ fopen()用法及代码示例
- C++ forward_list::max_size()用法及代码示例
- C++ forward_list::reverse()用法及代码示例
- C++ feupdateenv()用法及代码示例
- C++ forward_list::swap()用法及代码示例
- C++ forward_list::front()、forward_list::empty()用法及代码示例
- C++ functional::bad_function_call用法及代码示例
- C++ find_if()用法及代码示例
- C++ find()用法及代码示例
注:本文由纯净天空筛选整理自 C++ freopen()。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。