c - C语言从键盘输入一个字符

标签 c char

我有以下代码,其中 check 是字符类型

do{
      printf("Do you want to add an edge(n to stop adding)\n");
      check = getchar();
}while(check!='n');

do{
      printf("Do you want to add an edge(n to stop adding)\n");
      scanf("%c",&check);

}while(check!='n');

它们都产生相同的输出

例如对于 r\n 我得到 Do you want to add an edge 两次并且对于 tt\n<​​/strong> 我得到同样的问题三次,然后询问输入。

我的问题是如何避免它以及它为什么会发生?

最佳答案

要解决您的问题,请尝试以下操作:

void main()
{
    char check;
    char c;
    do
    {
        printf("Do you want to add an edge(n to stop adding)\n");
        check = getchar();
        do { c = getchar(); } while (c != '\n' && c != EOF);  // This gobbles the rest of the chars on stdin
    } while(check != 'n' && check != EOF);
}

关于c - C语言从键盘输入一个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10096137/

相关文章:

c# - 如何替换字符串中除几个字符之外的所有字符和数字

c - 使用整数常量的宏初始化对象

c - 将三维数组传递给 C 中的函数

c - 如何为 const char* 数组赋值并打印到屏幕

c - 数组中有符号和无符号字符的索引有什么区别?

C fscanf - 格式化输入

c - 如果它与 GNU89、C89、GNU99、C99 一起使用,术语 *ANSI C* 指定了什么?

sql - 如何检查数据库的架构

c - fscanf 计数 "invisible"个空格

java - 如何检查 char 数组中是否有空格?