c – 在freopen()之后从stdin获取输入

前端之家收集整理的这篇文章主要介绍了c – 在freopen()之后从stdin获取输入前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
嗨,我想如何在调用后再次从stdin获取输入:
freopen("Smefile.txt","r",stdin);

确切地说,我希望我的第一个程序中的第一个应该从指定文件获取下一部分将从stdin获取的输入.

喜欢:

int a,b;
 freopen("Smefile.txt",stdin);
 scanf("%d",&a);

 {
   //some block here such that the next cin/scanf takes b from standard input
 }
 cin>> b;
 cout <<a<<" "<<b;

有任何想法吗?

解决方法

你不能.使用
FILE *input = fopen("Smefile.txt","r");

// read stuff from file

fclose(input);
input = stdin;

代替.

当您在同一个流上混合C和C风格的I / O时,这无济于事,我不建议这样做.

(如果你碰巧在Linux上,你可以重新打开/ dev / stdin.在Linux / Unix上,你也可以使用Jerry Coffin的dup2技巧,但这甚至更加毛躁.)

原文链接:https://www.f2er.com/c/110781.html

猜你在找的C&C++相关文章