`freopen` 是一个在 C 和 C++ 语言中常用的库函数,它用于重新打开或关闭一个已存在的文件流。该函数常常与标准库中的文件流(如 `stdin`、`stdout` 或 `stderr`)一起使用,以改变它们的默认行为或重定向它们的输出/输入。
函数原型如下:
```c
FILE *freopen(const char *filename, const char *mode, FILE *stream);
```
参数说明:
* `filename`: 要打开或重新打开的文件的名称。
* `mode`: 打开文件的模式字符串,这与 `fopen` 函数中的模式字符串相同。例如,"r" 表示只读,"w" 表示写入(如果文件存在则清空内容),"a" 表示追加等。
* `stream`: 要重新打开或关闭的文件流指针。通常这是标准库中的一个文件流指针,如 `stdin`、`stdout` 或 `stderr`。
返回值:如果成功,返回文件流的指针;如果失败,返回 `NULL`。
示例:将标准输出重定向到一个名为 "output.txt" 的文件中:
```c
freopen("output.txt", "w", stdout); // 将 stdout 重定向到 output.txt 文件
```
注意:使用 `freopen` 时要小心,特别是在重定向标准输入/输出时,因为这样做可能会影响程序的正常行为。确保你了解重定向的后果,并始终确保在适当的时候关闭文件流以避免资源泄漏或其他问题。