【发布时间】:2017-08-25 13:54:15
【问题描述】:
我有一个密码。想法是当我需要输入一个数字但我输入一个非数字字符时,检查错误并要求我输入一个工作数字,或者继续或中断。但它跳过了不输入数字的代码。这是代码:
int EnterNumber(){
int number;
printf("Enter your's number:");
if(!scanf("%d", &number)){
puts("Keypress don't number!");
int choose = 0;
puts("Work:\n\t1. Continue 2. Break \nYour's number will choose:");
while(!scanf("%d", &choose)){ // here it jumped.I cann't enter number!
switch(choose){
case 1:
EnterNumber();
break;
case 2:
break;
default:
puts("Keyboard don't recognize");
break;
}
}
}
return number;
}
谁能帮我解决这个错误,好吗?
【问题讨论】:
-
这不是“跳转”,而是递归,你可能不希望在这里。您已经有一个
while循环,只需修复它。 -
你能准确地说出我的错误吗!
-
好的,谢谢。我解决了问题!
-
请注意,
scanf()在 EOF 上返回-1,您的代码会将其视为有效输入。 -
好的,谢谢!我会注意这么多。
标签: c