我在switch语句中使用goto语句,如果其无效,则再次从用户那里获取输入。这是代码
#include<stdio.h>
int main(void)
{
int choice;
input:
printf("Enter Your Choice: ");
scanf("%d", &choice);
switch(choice)
{
case 1:
/* do something */
break;
case 2:
/* do something */
break;
case 3:
/* do something */
break;
default:
printf("Invalid Input");
goto input;
}
}
当输入为数字时,代码工作得很好。但是当我输入字母表或某些字符代码无限运行时就好像scanf不存在一样。我无法理解这种行为。为什么会这样发生呢?