我如何在 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");
}
}
我要求用户输入一个字母,每个字母的作用不同。如果他们输入任何其他内容,它会在最后打印出 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");
}
}