我要求用户输入一封信,每封信都有不同之处。如果他们输入任何其他内容,则会在结尾处打印出else语句。问题是无论我输入什么,都会打印出else语句并打印出来#34;输入一个字母:"两次。我一直在搜索谷歌和堆栈溢出,我不知道我是否是盲人或我能找到答案的是什么。请帮忙。
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");
}
}
答案 0 :(得分:2)
我认为您的问题是在\n
scanf()
将scanf()
代码更改为
scanf(" %c", &letter);
%c
之前的空格应该从左边的换行符\n
转义。
答案 1 :(得分:0)
如果你写while(false)
,循环的主体将不会被执行。你需要写while(true)
而不是。当你使用scanf
时,你必须注意'\ n'字符,因为它会对输出产生影响。在%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");
}
}