C++freopen的用法

介绍:

freopen常用于比赛中,是文件输入输出的意思。

写法:

freopen("输入文件名","r",stdin);

freopen("输出文件名","w",stdout);

下面用freopen写一个a+b。

cpp 复制代码
#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)到指定的文件。通常在需要从文件读取输入或输出到文件时使用,避免手动修改大量代码中的输入/输出语句。

函数原型

cpp 复制代码
FILE* freopen(const char* filename, const char* mode, FILE* stream);
  • filename:目标文件名。
  • mode :文件打开模式(如 "r" 为读,"w" 为写,"a" 为追加)。
  • stream :需要重定向的流(stdinstdoutstderr)。
  • 返回值 :成功时返回流的指针,失败时返回 NULL

常见用途

重定向标准输入到文件
cpp 复制代码
freopen("input.txt", "r", stdin);

此后所有 scanfcin 操作将从 input.txt 读取数据。

重定向标准输出到文件
cpp 复制代码
freopen("output.txt", "w", stdout);

此后所有 printfcout 操作将写入 output.txt

示例代码

cpp 复制代码
#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)

cpp 复制代码
freopen("/dev/tty", "r", stdin);  // 恢复标准输入
freopen("/dev/tty", "w", stdout); // 恢复标准输出

兼容性问题

  • Windows 平台需使用 CON 代替 /dev/tty
  • 竞赛编程中常用 freopen 简化文件输入/输出,但需注意平台差异。
相关推荐
多加点辣也没关系12 小时前
JavaScript|第4章:类型转换
开发语言·javascript
聪慧的水蜜桃12 小时前
【YFIOs】用C#开发硬件之设备上云
开发语言·c#
yqcoder13 小时前
httpOnly 是什么,又有什么用?
开发语言·前端·javascript
山登绝顶我为峰 3(^v^)313 小时前
C/C++ 交叉编译方法
java·c语言·c++
wuqingshun31415914 小时前
重写equals而不重写hashCode,会出什么问题?
java·开发语言
飞猪~14 小时前
LangChain python 版本 第一集
开发语言·python·langchain
李燚15 小时前
Go 项目怎么组织:DDD 4 层 vs MVC vs 脚本式
开发语言·golang·mvc·ddd·agent框架·eino
2zcode16 小时前
免费开源项目文档:基于MATLAB图像处理的啤酒瓶口缺陷检测系统设计与实现
开发语言·图像处理·matlab
人工智能时代 准备好了吗16 小时前
AI回答内容进入率监测:引用识别、文本匹配与语义判断
开发语言·人工智能·python
LONGZETECH16 小时前
新能源汽车动力电池检测仿真教学系统:C/S 分层架构与数字化实训落地全解析
大数据·c语言·开发语言·人工智能·架构·系统架构·汽车