freopen c语言
freopen 是 C 语言标准库中的一个函数,常用于 重定向标准输入输出流(如 stdin、stdout、stderr)。它的典型用途是在程序中将标准输入/输出改为文件。
🧠 基本函数原型(来自 <stdio.h>)
c
复制编辑
FILE *freopen(const char *filename, const char *mode, FILE *stream);
📌 参数说明:
| 参数 | 含义 |
|---|---|
filename |
要打开的文件名(路径) |
mode |
文件打开模式(如 "r"、"w"、"a" 等) |
stream |
要重定向的标准流(如 stdin, stdout, stderr) |
✅ 返回值:
-
成功:返回一个新的
FILE *指针(同stream) -
失败:返回
NULL
📘 示例 1:将标准输出重定向到文件
c
复制编辑
#include <stdio.h> int main() { freopen("output.txt", "w", stdout); // 重定向 stdout 到 output.txt printf("这句话会写入文件,而不是打印到终端。\n"); return 0; }
执行后,
output.txt文件中将包含这句话,终端不会显示任何内容。
📘 示例 2:将标准输入重定向到文件
c
复制编辑
#include <stdio.h> int main() { char str[100]; freopen("input.txt", "r", stdin); // 重定向 stdin 到 input.txt scanf("%s", str); // 从文件中读取字符串 printf("读取到:%s\n", str); return 0; }
假设
input.txt中内容是hello,程序将输出读取到:hello。
📘 示例 3:同时重定向多个流(标准输出和错误输出)
c
复制编辑
freopen("out.log", "w", stdout); freopen("err.log", "w", stderr);
❗ 注意事项:
| 项目 | 说明 |
|---|---|
| 文件关闭 | freopen 会自动关闭原始的 stream 所关联的文件 |
| 与 freopen 相对的方法 | 如果要恢复原始的 stdout,可保存 stdout 的文件描述符(低级操作) |
| 平台兼容性 | freopen 是标准 C 函数,在 Windows 和 Linux 都可用 |
🛠️ 高级用法(Linux 重定向):
在 Linux 下,如果你想用 shell 实现同样的效果:
bash
复制编辑
./your_program > output.txt < input.txt
但用 freopen 是在 C 程序内部实现重定向,不依赖 shell。
✅ 总结一句话:
freopen允许你在 C 程序中把标准输入/输出/错误重定向到文件,非常适合做日志记录、文件驱动的测试、IO 自动化等场景。
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)