为什么我的代码注册"输入"作为输入?

时间:2016-12-08 11:46:41

标签: c while-loop switch-statement

我试图创建以下程序:

#include <stdio.h>
#include <stdlib.h>

int main(){
    int grade;
    while( (grade = getchar()) != EOF){
        printf("grade is currently %c \n" , grade); /*added this line to confirm my suspicion that somehow my "enter" input was being registered for some reason*/
        switch(grade){
        case 'a':
            printf("you got an a!\n");
            break;
        case 'b':
            printf("you got a b!\n");
            break;
        default:
            printf("error :(\n");
            break;
        }
    }
    printf("Hello world!\n");
    return 0;
}

但是,当我输入字符&#39; a&#39;时,我似乎得到两个输出。第一个输出是按照预期的,即它打印&#34;你有一个!&#34;。然而,在那之后,我似乎得到了第二个输出,即&#34;默认&#34;案件。而且我意识到这是因为程序以某种方式阅读我的&#34;输入&#34;作为输入?有办法防止这种情况吗?我有点担心,因为这段代码与从教科书中提供给我的源代码几乎相同,所以我认为这段代码不应该出现故障:(

此外,任何人都可以帮助指导我这个程序如何在没有scanf的情况下读取我的输入?为什么声明为整数的grade变量会接收字符输入?

0 个答案:

没有答案