c-为什么我的if/else语句不起作用



我开始为一个小型银行账户程序编写代码,但我的if/else语句不起作用。在循环的顶部,我使用scanf来获得关于下一步需要执行哪个选项的用户输入。第一个总是有效的,但在那之后,错误语句总是被打印出来。

例如,用户键入1。打印的是:

case 1
ERROR, please try again

只有情况1应该打印,为什么错误消息也要打印?我尝试使用switch case语句,但也不起作用。


这是我的代码:

char num = '7';
while (1) {
if(num == '7') {  
printf("0. Exitn1. Depositn2. Withdrawaln3. Add accountn");
printf("4. Remove accountn5. Balance inquiryn6. View accountsn");
printf("Enter option: (0/1/2/3/4/5/6)n");
scanf("%c", &num);
}
else if (num == '0') {
exit(0);
}
else if (num == '1') {
printf("case 1n");
num = '7';
}
else if (num == '2') {
printf("case 2n");
num = '7';
}
else if (num == '3') {
printf("case 3n");
num = '7';
}
else if (num == '4') {
printf("case 4n");
num = '7';
}
else if (num == '5') {
printf("case 5n");
num = '7';
}
else if (num == '6') {
printf("case 6n");
num = '7';
}
else {
printf("ERROR, please try againn");
num = '7';
} 
}

scanf%c格式说明符接受任何单个字符,包括空格或换行符。

例如,如果用户输入"1",他们实际上是在发送字符"1">换行符。循环的第一次迭代读取"1"字符,换行符保留在输入缓冲区中。在下一次迭代中,scanf立即读取缓冲区中的换行符。由于换行符的字符代码与if的任何一种情况都不匹配,所以它会一直延续到else

更改scanf调用以添加前导空格。这将消耗任何空白:

scanf(" %c", &num);

相关内容

  • 没有找到相关文章

最新更新