C:循环内的scanf()

时间:2014-10-01 16:04:28

标签: 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++;
}

2 个答案:

答案 0 :(得分:-1)

%c的{​​{1}}之前添加空格。这样做是为了在扫描角色之前从scanf删除所有空白。输入一个字符后,stdin不会使用scanf(输入密钥)字符,而是在再次调用\n时将其保留在缓冲区中。

另一件事:您忘记在代码中添加一个scanf

答案 1 :(得分:-1)

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

 scanf(" %c", &grade);