嗨,我想如何在调用后再次从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技巧,但这甚至更加毛躁.)