原网址:here
有时用了freopen,怎么搞都不能从控制台输入输出了,相当郁闷。于是总结了一下用freopen后恢复到控制台的方法。
方法一、
在freopen前,调用dup把标准输出的文件描述符保存起来
old = _dup( 1 );
FILE *fp=freopen("a.out","w",stdout);
fflush(fp);//将输出缓冲区清空
_dup2( old, 1 );//恢复标准输出文件描述符
printf("方法一 OK!\n");
方法二、(适用在windows下)
FILE *fp=freopen("a.out","w",stdout);
fflush(fp);//将输出缓冲区清空
freopen( "CON", "w", stdout ); //定向输出到控制台
方法三、(使用在Linux下)
FILE *fp=freopen("a.out","w",stdout);
fflush(fp);//将输出缓冲区清空
freopen("/dev/tty", "w", stdout);
freopen("/dev/tty", "r", stdin);