ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

【C++】重定向是什么

2026/8/3 3:25:01 拓冰建站 浏览量
【C++】重定向是什么 1、什么是标准输入输出C 默认printf→标准输出 stdout→ 默认打印到屏幕scanf→标准输入 stdin→ 默认从键盘读取重定向 改变数据流的目的地/来源不让程序读写屏幕、键盘改成读写文件。分为两种①操作系统Shell重定向外部重定向最常用②C代码内部重定向freopen程序内部实现2. 第一种命令行重定向外部不用改代码编译程序得到a.exe# 把程序输出从屏幕 → 写入output.txt./a.exeoutput.txt# 从文件input.txt代替键盘输入./a.exeinput.txt# 输入文件同时输出到文件./a.exeinput.txtoutput.txt输出重定向输入重定向✅优点源代码完全不用修改。3. 第二种代码内部重定向 freopen()头文件#include stdio.h#includestdio.hintmain(){// 输出重定向printf不再打印屏幕写入out.txtfreopen(out.txt,w,stdout);printf(这段文字不会出现在屏幕保存到文件\n);// 恢复回屏幕输出可选// freopen(CON, w, stdout);return0;}输入重定向示例// scanf 不再读键盘读取 in.txtfreopen(in.txt,r,stdin);⚠️ Windows 恢复控制台freopen(CON,r,stdin)Linux 恢复控制台freopen(/dev/tty,r,stdin)4、核心概念区分很多人混淆重定向只是改变数据流方向程序里printf/scanf写法完全不用变代码无需改动读写逻辑。程序自身“感觉”还是在和键盘、屏幕交互底层被转发到文件。和直接fopen/fprintf的区别fopen你主动创建文件指针FILE* fp使用fprintf(fp, ...)重定向不改原有printf代码劫持全局stdin/stdout。5、典型使用场景OJ算法刷题本地测试不用手动输入一堆数据程序日志快速导出到文件批量测试自动读取测试用例。6、常见坑freopen失败不会报错记得判断返回值程序结束前如果需要恢复控制台输出要手动恢复多次freopen容易造成流泄露。极简一句话总结重定向不改printf/scanf代码把本该屏幕、键盘的数据转移到文件中读写。