【问题标题】:C continue after buffer clearC 缓冲区清除后继续
【发布时间】:2014-11-21 20:57:45
【问题描述】:

如果用户输入多个字符,我将使用while(getchar()!= '\n'); 清除缓冲区。

如果输入了多个字符,程序不会卡住。但是,如果输入一个字符,程序会等待我按 Enter 继续。即使只输入一个字符,我怎样才能让它继续? 感谢您提供的任何帮助!

【问题讨论】:

  • 在这里发布你的代码 sn-p 总是好的,而不是理论上的解释..

标签: c buffer getchar


【解决方案1】:

您可以在提交读取之前检查键盘缓冲区

while (kbhit()) getch();

【讨论】:

  • kbhit() 不是标准的,可能不可用。
  • 这个函数有点“非法”。
  • 我要补充一点,在所需的输入之后检查是没有用的,因为代码执行可能在用户输入之前,所以它应该在下一个用户输入之前。但同样适用。 OP最初评论说他发布的一行就足够了,但事实并非如此。在任何情况下,GIGO 规则都适用。
  • 之前使用 kbhit() 的 SO 答案被给予 +4 并打勾,但我投了反对票。 stackoverflow.com/questions/15603082/…
  • @WeatherVane 其他问题在其他平台上标记为 windowsvisual-C++...,kbhit() 通常不可用。
猜你喜欢
  • 1970-01-01
  • 2016-08-18
  • 1970-01-01
  • 1970-01-01
  • 2014-02-25
  • 1970-01-01
  • 1970-01-01
  • 2023-03-23
  • 2020-04-11
相关资源
最近更新 更多