1 何谓输入输出重定向?
默认情况下输入是由键盘输入的。输出是默认的输出到屏幕上。而输入输出重定向就是改变默认的输入输出方向
2 freopen函数
freopen是被包含与stdio.h头文件中,是重定向输入输出流的函数。此函数一般用于将一个指定的文件打开一个预定义的流:标准输入、标准输出或者标准出错。
声明:FILE *freopen( const char *path, //文件名,用于存储输入输出的自定义文件名
const char *mode, //文件打开的模式。和fopen中的模式(如r-只读, w-写)相同
FILE *stream //一个文件,通常使用标准流文件,stdin-输入,stdout-输出
); //返回值:成功,则返回一个path所指定文件的指针;失败,返回NULL
3 先写一个是小写字母变为大写字母的程序,我这里是test5.c
#include <stdio.h>
#include <ctype.h>
#include <stdlib.h> int main(){
int ch;
while((ch=getchar())!=EOF){
putchar(toupper(ch));
}
exit();
}
4 然后写一个test6.c,用于调用test5.c
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h> int main(int argc,char *argv[]){
char *filename;
if(argc != ){
fprintf(stderr,"usage:useupper file\n");
exit();
}
filename=argv[]; //获取文件名
if(!freopen(filename,"r",stdin)){ //将stdin文件流和filename文件关联起来
fprintf(stderr,"could not redirect stdin from file %s\n",filename);
exit();
}
execl("./test5","test5",NULL); //调用test5.c中的程序,使小写字母变成大写字母
perror("could not exec ./test5");
exit();
}
5 最后写一个file.txt,内容为:this is the file,file.txt,it is all lower case
6 结果如图: