【C++竞赛】文件读写——freopen

宇宙免责声明:本文部分由D老师和豆老师进行编写,D老师太过幽默,读起来可能有些不“逝”,请见谅


一句话定位:

freopen 是竞赛中很重要的操作,如果你不会的话,你将面临正常考试零分的结果。


核心功能三连:

  1. 输入重定向freopen("data.in", "r", stdin);
    👉 cin 从此只看得到 data.in 里的数据
  2. 输出重定向freopen("result.out", "w", stdout);
    👉 cout 把结果塞进 result.out,屏幕一脸懵。
  3. 模式须知
    • "r":文件必须存在(不然 freopen 哭给你看😢)
    • "w":文件存在?清空!不存在?新建!(无情铁手✋)

竞赛必知段子:

#include <cstdio>
int main() {

    #ifdef DEBUG
        freopen("test.in", "r", stdin);  
        freopen("test.out", "w", stdout);
    #endif

    int x;
    std::cin >> x; 
    std::cout << x * 2; // 结果输出在test.out

    return 0;
}
运行效果:
  • 本地跑:程序变“地下工作者”,屏幕风平浪静,结果藏身 test.out
  • 提交OJ:注释掉 #ifdef,程序秒变“乖宝宝”,cin/cout 老实等裁判喂数据。

比赛时的暴零瞬间:

  1. 路径坑
    data.in 必须和程序 同目录(换句话说在同一个文件夹里)!
    👉 否则程序:“文件呢?我吃空气吗?” 🤷‍♂️
  2. 提交忘注释
    忘删 freopen → OJ 等你键盘输入 → 超时(TLE)暴毙!
    👉 经典遗言“我本地明明AC了啊!”
  3. "w"模式清空警告
    手滑运行两次?第一次的 result.out 已灰飞烟灭!
    👉 建议:调试时用 文件对比工具(救你狗命🆘)

终极口诀(10秒背会): <-D老师写的

文件重定向,freopen 强;
stdin 偷输入,stdout 藏输出。
本地开 #ifdef,提交必注释!
路径若写错,程序两行泪💧


幽默收尾: <-D老师写的

它像程序界的 “双面间谍”
调试时——暗中操作文件深藏功与名;
提交时——秒变清白之身迎接OJ审判!
用对稳如老狗,用错当场翻车 🚗💨

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值