原网址: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);
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步