不能在简单的 C 代码片段中使用 2 getchar() 函数

can't use 2 getchar() function in a simple C snippet code

我在编程方面有点菜鸟,尤其是在 C 语言方面。我正在尝试一些代码来了解有关 C syntax.here 我的问题的更多信息:为什么波纹管代码段中的第二个 getchar() 不起作用?我的意思是我想控制台等到我输入然后完成。

#include<stdio.h>
#include<curses.h>

int main() {
    char ch = getchar(); 
    getchar();

    return 0;
}

PS:我用的是ubuntu17.10.

如评论中所述,您正在输入两个字符。字母a和换行符(\n)。显示第二个 getchar() 接受 \n.

如果您想使用第二个 getchar(),那么在使用它之前请使用 fflush(stdin)。 fflush(stdin) 通常会删除(刷新)这种类型的额外字符(在您的情况下 \n)。或者你可以按照下面的方式做

#include<stdio.h>
#include<curses.h>

int main() {
    char ch;
    printf("Enter a charcter: ");
    ch = getchar(); 
    printf("\nyou typed the character ");
    putchar(ch);
    while ((getchar()) != '\n');     //fflush(stdin);   /* use this*/
    getchar();

    return 0;
}

这里是“while ((getchar()) != ‘\n’);”读取缓冲区字符直到最后并丢弃它们(包括换行符)并在“scanf()”语句清除输入缓冲区并允许在所需容器中输入后使用它。

另请参阅以下链接。

  1. Replacement of fflush(stdin)
  2. Alternative to C library-function fflush(stdin)
  3. Using fflush(stdin)
  4. Clearing The Input Buffer In C/C++