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