java 清除stdin缓冲区,标准inputstream(stdin)的文件结尾(EOF)

第一个getchar()实际上是getc(stdin),所以getc(FILE)可以从中读取更多。 getchar()从inputstream或标准input中得到最后一个未处理的字符,按回车是'\ n'。 如果stdin为空,则getchar强制暂停以获取input。 在一个程序中说我首先调用getchar(),stdin是空的,所以它暂停input。 如果我inputab'\ n',第一个getchar()会得到'a'的ascii。 下一次我调用getchar()我会得到b,然后再次getchar()将有'\ n'。

为了certificate这个写代码。

int choice; do { cout << "Enter input:" ; choice = getchar(); cout << "Last getchar(): " << choice << ":" << (char) choice ; if( choice == '0' || choice == EOF) { cout << "Exited loop" << endl; // EOF is ctrl+z in windows break; } }while(true);

我相信stdin是一个全球性的,所以直到getchar()或类似的函数被调用它来清除stream中的字符留在那里,如果你在其他地方使用getchar(),可能会导致错误。 正如人们已经提到的,你可以使用gets(char []),把所有的字符都放到换行符中。 这个问题是你需要一个大于input的char [],否则你会得到错误。 好的是get(char [])清除stdin,所以你可以使一个dumby缓冲区来清除stdin或者处理它。

我希望这是信息。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值