我如何在 C 中解决这个问题?

How do I fix this in C?

我要求用户输入一个字母,每个字母的作用不同。如果他们输入任何其他内容,它会在最后打印出 else 语句。问题是无论我输入什么,都会打印 else 语句,它会打印 "Enter a letter: " 两次。我一直在搜索 google 和 stack overflow,也不知道是我眼瞎还是怎么的,就是找不到答案。请帮忙。

    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");
    }
}

我认为你的问题是 scanf()

之后漏掉的换行符 \n

scanf()代码更改为

scanf(" %c", &letter);

%c 之前的 space 应该转义左边的换行符 \n

如果你写while(false),循环体就不会executed.you需要写while(true)instead.Also,当你使用scanf你必须注意 '\n' 字符,因为它会影响 output.The 添加 space 到 %c 应该处理之前的 scanf 语句。

 while(true){
    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");
    }
}