相关疑难解决方法(0)

如何清除C中的输入缓冲区?

我有以下程序:

int main(int argc, char *argv[])
{
  char ch1, ch2;
  printf("Input the first character:"); // Line 1
  scanf("%c", &ch1); 
  printf("Input the second character:"); // Line 2
  ch2 = getchar();

  printf("ch1=%c, ASCII code = %d\n", ch1, ch1);
  printf("ch2=%c, ASCII code = %d\n", ch2, ch2);

  system("PAUSE");  
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

正如上面代码的作者所解释的那样:程序将无法正常工作,因为在第1行,当用户按下Enter时,它将在输入缓冲区中留下2个字符:Enter key (ASCII code 13)\n (ASCII code 10).因此,在第2行,它将读取\n并且不会等待用户输入字符.

好的,我明白了.但我的第一个问题是:为什么第二个getchar()(ch2 = getchar();)不读取Enter key (13)而不是\n字符?

接下来,作者提出了两种解决此类问题的方法:

  1. 使用 fflush()

  2. 写一个这样的函数:

    void
    clear …
    Run Code Online (Sandbox Code Playgroud)

c buffer

70
推荐指数
7
解决办法
32万
查看次数

标签 统计

buffer ×1

c ×1