C++中的freopen的用法实例详解
介绍:
freopen常用于比赛中,是文件输入输出的意思。
写法:
freopen("输入文件名”,“r”,stdin);
freopen("输出文件名”,“w”,stdout);
下面用freopen写一个a+b。
#include <bits/stdc++.h>
using namespace std;
int main(){
freopen("1.in","r",stdin);
freopen("1.out","w",stdout);
int a,b;
cin>>a>>b;
cout<<a+b;
return 0;
}补充:
freopen 的基本概念
freopen 是 C/C++ 标准库中的一个函数,用于重定向标准输入(stdin)、标准输出(stdout)或标准错误(stderr)到指定的文件。通常在需要从文件读取输入或输出到文件时使用,避免手动修改大量代码中的输入/输出语句。
函数原型
FILE* freopen(const char* filename, const char* mode, FILE* stream);
- filename:目标文件名。
- mode:文件打开模式(如
"r"为读,"w"为写,"a"为追加)。 - stream:需要重定向的流(
stdin、stdout或stderr)。 - 返回值:成功时返回流的指针,失败时返回
NULL。
常见用途
重定向标准输入到文件
freopen("input.txt", "r", stdin);
此后所有 scanf 或 cin 操作将从 input.txt 读取数据。
重定向标准输出到文件
freopen("output.txt", "w", stdout);
此后所有 printf 或 cout 操作将写入 output.txt。
示例代码
#include <cstdio>
int main() {
freopen("input.txt", "r", stdin);
freopen("output.txt", "w", stdout);
int a, b;
scanf("%d%d", &a, &b);
printf("%d\n", a + b);
fclose(stdin);
fclose(stdout);
return 0;
}注意事项
- 错误处理:检查
freopen返回值是否为NULL,避免文件打开失败导致未定义行为。 - 恢复默认流:可通过重定向到
/dev/tty(Linux)或CON(Windows)恢复控制台输入/输出。 - 文件关闭:显式调用
fclose关闭文件流,避免资源泄漏。
恢复标准流示例(Linux)
freopen("/dev/tty", "r", stdin); // 恢复标准输入
freopen("/dev/tty", "w", stdout); // 恢复标准输出
兼容性问题
- Windows 平台需使用
CON代替/dev/tty。 - 竞赛编程中常用
freopen简化文件输入/输出,但需注意平台差异。
到此这篇关于C++中的freopen的用法实例详解的文章就介绍到这了,更多相关C++ freopen用法内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
C++ Qt开发之使用QUdpSocket实现UDP网络通信
Qt 是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,本文主要介绍如何运用QUdpSocket组件实现基于UDP的网络通信功能,需要的可以参考下2024-03-03
CreateThread()与beginthread()的区别详细解析
很多开发者不清楚这两者之间的关系,他们随意选一个函数来用,发现也没有什么大问题,于是就忙于解决更为紧迫的任务去了。等到有一天忽然发现一个程序运行时间很长的时候会有细微的内存泄露,开发者绝对不会想到是因为这两套函数用混的结果2013-09-09


最新评论