从C重路由stdin和stdout我想重新打开stdin和stdout(也许还有stderr)文件处理,以便将来调用printf()或putchar()或puts()将转到一个文件中,以后将调用getc()这将来自一个文件。1)我不想永久地丢失标准输入/输出/错误。我可能想在以后的程序中重用它们。2)我不想打开新的文件句柄,因为这些文件句柄要么必须大量传递,要么必须是全局的(颤抖)。我不想用任何open()或fork()或者其他依赖于系统的函数,如果我帮不上忙的话。所以基本上,这样做有效吗?stdin = fopen("newin", "r");如果是的话,我如何才能得到stdin背?我要把它储存在FILE *晚点再拿回来?
3 回答
精慕HU
TA贡献1845条经验 获得超8个赞
freopen()
<stdio.h>
:
116.类的主要用途。 freopen
函数是更改与标准文本流关联的文件( stderr
,stdin
,或 stdout
),因为这些标识符不需要是可修改的lvalue,因此 fopen
功能可以分配。
freopen
stdin = freopen("newin", "r", stdin);
fclose(stdin); stdin = fopen("newin", "r");
stdin
freopen
freopen("newin", "r", stdin);
- 3 回答
- 0 关注
- 501 浏览
添加回答
举报
0/150
提交
取消