用C语言设计简单的I/O重定向函数,可以套用在其他程序中
时间: 2023-06-17 22:05:17 浏览: 62
在C语言中,可以使用标准库函数`freopen`来实现I/O重定向。`freopen`函数的原型如下:
```c
FILE *freopen(const char *filename, const char *mode, FILE *stream);
```
其中,`filename`参数是重定向后的文件名;`mode`参数是文件的打开模式,可以是`"r"`(只读)、`"w"`(只写)、`"a"`(追加)、`"r+"`(读写)或`"w+"`(读写,若文件存在则清空);`stream`参数是需要重定向的文件流,可以是`stdin`、`stdout`或`stderr`。
下面是一个简单的I/O重定向函数的实现,可以重定向输入、输出和错误流:
```c
#include <stdio.h>
void redirect_io(const char *input_file, const char *output_file, const char *error_file) {
if (input_file != NULL) {
freopen(input_file, "r", stdin);
}
if (output_file != NULL) {
freopen(output_file, "w", stdout);
}
if (error_file != NULL) {
freopen(error_file, "w", stderr);
}
}
```
你可以在自己的程序中调用这个函数来实现I/O重定向,例如:
```c
int main(int argc, char *argv[]) {
redirect_io("input.txt", "output.txt", "error.txt");
printf("This will be redirected to output.txt\n");
fprintf(stderr, "This will be redirected to error.txt\n");
return 0;
}
```
这个程序会将标准输入重定向到`input.txt`文件,标准输出重定向到`output.txt`文件,标准错误输出重定向到`error.txt`文件。执行后,在`output.txt`文件中会输出`This will be redirected to output.txt`,在`error.txt`文件中会输出`This will be redirected to error.txt`。