加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 03:38:37 所属栏目:百科 来源:网络整理
导读:嗨,我想如何在调用后再次从stdin获取输入: freopen("Smefile.txt","r",stdin); 确切地说,我希望我的第一个程序中的第一个应该从指定文件中获取下一部分将从stdin获取的输入. 喜欢: int a,b; freopen("Smefile.txt",stdin); scanf("%d",a); { //some block
嗨,我想如何在调用后再次从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技巧,但这甚至更加毛躁.)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读