【问题标题】:C skipping getchC跳过getch
【发布时间】:2015-05-02 18:10:05
【问题描述】:

当我看到在某些情况下 C 跳过了一些输入时,我感到很惊讶。就我而言,我使用的是带有 Code::Blocks(xterm) 的 Ubuntu。例如,如果我有以下部分代码:

scanf("%d",&someInt);
getch();

我可以输入一个数字,但是按回车键,它会为 someInt 保存值并自动将 ENTER char 发送到 getch()。我预计我的程序在输入数字并按回车后等待按任意键。但这不会发生。我已经找到了解决方案,但这不是一个好的解决方案。

scanf("%d",&someInt);
getch();
getch();

使用两个 getch() 解决了我的问题。我正在输入数字,我必须按任意键才能继续。为什么会这样?如何解决?

【问题讨论】:

  • 您确定您使用的是getch 而不是getchar
  • getchar() ,对不起 :)

标签: c scanf getch


【解决方案1】:

getch() 读取一个字符,在您的情况下,它正在读取一个 \n,因为在读取 someint 后,缓冲区中会留下一个换行符。

【讨论】:

    【解决方案2】:

    您可以在scanf 格式中包含换行符:

    scanf("%d\n", &someInt);
    getch();
    

    【讨论】:

      猜你喜欢
      • 2019-10-07
      • 2011-10-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-08
      • 2015-03-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多