在学习 C语言输入输出重定向 的过程中,很多初学者常常对如何从文件读取输入或把输出写入文件感到困惑。其实,C语言提供了非常灵活的方式处理标准输入(stdin)和标准输出(stdout),通过重定向技术,我们可以轻松地将程序的输入来源或输出目标从控制台切换到文件。
在C语言中,scanf 默认从键盘读取数据(即标准输入 stdin),而 printf 默认将结果打印到屏幕上(即标准输出 stdout)。所谓输入输出重定向,就是改变这些默认行为,让程序从文件读取输入或将输出写入文件,而不是依赖用户手动输入或屏幕显示。
这是最简单、最常用的方法,无需修改代码,只需在运行程序时使用操作系统的重定向符号即可。
示例程序:
#include <stdio.h>int main() { int a, b; scanf("%d %d", &a, &b); printf("%d + %d = %d\n", a, b, a + b); return 0;} 假设你已将上述代码编译为 add.exe(Windows)或 ./add(Linux/macOS)。
input.txt 读取:./add < input.txtoutput.txt:./add > output.txt./add < input.txt > output.txt如果你希望在程序内部直接指定输入输出文件(比如用于在线评测系统或自动化测试),可以使用 freopen() 函数。
修改后的代码示例:
#include <stdio.h>int main() { // 将标准输入重定向到 input.txt freopen("input.txt", "r", stdin); // 将标准输出重定向到 output.txt freopen("output.txt", "w", stdout); int a, b; scanf("%d %d", &a, &b); printf("%d + %d = %d\n", a, b, a + b); // 恢复标准输入输出(可选) fclose(stdin); fclose(stdout); return 0;} 这样,无论你在哪个平台运行程序,都会自动从 input.txt 读取数据,并将结果写入 output.txt。
input.txt 文件与可执行文件在同一目录下,或提供完整路径。freopen() 后,原来的 stdin/stdout 被替换,调试时可能看不到输出,建议仅在提交代码或正式运行时使用。无论是通过命令行还是 freopen(),stdin stdout重定向 都是提升C语言程序灵活性的重要技巧。掌握这些方法后,你可以轻松处理大批量数据、自动化测试,甚至构建更复杂的I/O流程。
记住,重定向命令行输入输出 不仅适用于C语言,也是所有命令行程序通用的基础技能。多加练习,你很快就能熟练运用!
本文由主机测评网于2025-12-07发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://www.vpshk.cn/2025124279.html