我要求用户输入一个字母,每个字母都做不同的事情。如果他们输入其他任何内容,它将在最后打印出else语句。问题是无论我输入什么内容,else语句都会被打印,并且打印两次“输入字母:”。我一直在搜索谷歌和堆栈溢出,我不知道我是盲人还是盲人,但我找不到答案。请帮忙。

    while(false){ //I have a method here that returns true or false
    printf("Enter a letter: ");
    char letter;
    scanf("%c", &letter);

    if(letter == 'a'){ //position left
        //do some code
    }else if(letter == 'd'){ //position right
        //do some code
    }else if(letter == 'w'){ //value up
        //do some code
    }else if(letter == 'x'){ //value down
        //do some code
    }else{
        printf("NEW MOVEMENT: Enter a valid command by keyword:\n");
        printf("Valid commands: a d w x\n");
    }
}

最佳答案

我认为您的问题是\n后遗漏了换行符scanf()

scanf()代码更改为

scanf(" %c", &letter);


%c之前的空格应转义遗漏的换行符\n字符。

关于c - 如何在C中解决此问题?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33332260/

10-16 20:43