C:循环内的 scanf()

标签 c loops scanf

这个程序似乎并不在 while 循环的每次迭代中接受输入,理想情况下它应该接受。但是,当我用 %d 替换 scanf() 函数的 %c 参数时(即整数输入而不是char 输入)似乎工作得非常好,while 循环的每次迭代都接受该输入。为什么我会看到这种差异?

int main()
{
    char grade;
    int i=0;

    while(i<10){
        printf("Enter ur grade\n");
        scanf("%c", &grade);
        switch(grade){
            case 'A' : printf("U R THE BEST\n");
                       break;
            case 'B' : printf("U R VERY GOOD DUDE...\n");
                       break;
            case 'C' : printf("U R GOOD DUDE...\n");
                       break;
            case 'D' : printf("U R Not good DUDE...\n");
                       break;
            case 'E' : printf("U R WORST DUDE...\n");
                       break;
            default  : printf("U r AWESOME...\n");
                       break;
        }
    i++;
}

最佳答案

试试这个:在 %c 之前加一个空格,因为它也存储 \n

 scanf(" %c", &grade);

关于C:循环内的 scanf(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26145634/

相关文章:

java - 方法内的 Do-while 循环

python - 如何关闭 while 循环然后执行另一个代码块? while 循环总是重复

c - (null) 在打印字符串时正在打印

c - 精确的多重 scanf 输入

c - sscanf 格式和输出限额

c - 如何从文件在c中的路径获取文件所在的设备名称?

C++ 无限循环瓶颈?

c - 家庭作业 - 无法利用缓冲区溢出

java - 如果 `jobject` 代表同一个 Java 实例,它是否总是具有相同的地址?

c - Bison 中的空 block 规则?