scanf 在循环中读取一个字符,但没有正确地与条件进行比较

scanf reads a character in loop but does not compare properly with a conditional

我试图循环扫描一个字符,如果它不等于某个字符,它将继续循环。它正确打印字符,但退出条件不起作用(它继续尝试扫描)。这是我的代码:

do{
    scanf("%c",&user_input);
    printf("%c",user_input);
    }while(user_input =='w' ||'a'|| 's'|| 'd' || 'q');

再看看你的 while 循环的情况。虽然它在英语中有意义 ("while this is that, or that, or that..."),但它是对 OR 运算符的不当使用。发生的情况是,您要检查的每个字符('w' 除外)都被解释为布尔表达式。这些字符中的每一个实际上都是一个正数,在 C 中被解释为 True。条件始终为真,所以这就是循环永远不会终止的原因。

您需要将每个字符与条件的每个部分中的 user_input 进行比较;例如

while(user_input == 'w' || user_input == 'a' || user_input== 's' || ...