gpt4 book ai didi

c - 我如何将一个字符与 C 中的不同字母进行比较?

转载 作者:太空宇宙 更新时间:2023-11-04 05:53:22 25 4
gpt4 key购买 nike

这是我的代码。

char ask_for_command(){
char letter;
printf("Command: ");
scanf(" %c", &letter);
while(letter != 'a' || letter != 'd' || letter != 'w' || letter != 'x'){
printf("NEW MOVEMENT: Enter a valid command by keyword:\n");
printf("Valid commands: a d w x\n");
scanf(" %c", &letter);
}
return letter;
}

while 循环是这样工作的。

while(letter != 'a'){}

但不是这样的。

while(letter != 'a' || letter != 'd' || letter != 'w' || letter != 'x'){}

谁能给我解释一下为什么?提前谢谢你。

最佳答案

您想使用 &&而不是 ||供您比较。想一想:letter总是不等于 'a'或不等于 d .如果你的字母是 a,它仍然不等于 b,所以它不等于 a 或不等于 b。你想要的是一个不等于 'a' 的字母, 也不等于 'd' , nor 等。请注意,α 和 β 都与 not (α or β) 不是一回事。

letter 也是个好主意一个初始值(一个你不想要的,比如 'a' )或者使用 do - while像这样循环:

do {
printf("NEW MOVEMENT: Enter a valid command by keyword:\n");
printf("Valid commands: a d w x\n");
scanf(" %c", &letter);
} while (letter != 'a' && letter != 'd' && letter != 'w' && letter != 'x');

或者,您可以使用 strchr为此目的:

while (strchr("adwx", letter) == NULL)

别忘了 #include <string.h>当你使用 strchr .

关于c - 我如何将一个字符与 C 中的不同字母进行比较?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33652038/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com