我试图在C中执行此循环,您可以按Enter键并在其中,然后按0退出或3继续进行循环。但不知何故,Switch命令没有被激活。请注意,每个消息都有不同的消息,可以将它们与其他结果区分开来。有人可以帮我理解这段代码的问题吗?注意:代码显然在int main()中。
int I = 1;
printf("Press enter to start the loop...");
getchar();
do
{
printf("\nYou are in a LOOP. Would you like to stay in it, or leave it? \nPress 0 to leave the loop or press 3 to stay in it: ");
scanf_s("%d", &I);
getchar();
switch (I)
{
case'3':
printf("\nYou are STILL inside the LOOP. Press 0 to leave it or press 3 to stay in it: ");
getchar();
break;
case'0':
printf("\nExiting the LOOP...");
break;
default:
printf("\nPlease, enter a valid command...: ");
if (scanf_s("%d", &I) != 3 || scanf_s("%d", &I) != 0);
{
fflush(stdin);
}
break;
}
while (I != 0);
printf("\nCongratulations! You are OUT of the LOOP!");
答案 0 :(得分:0)
正如其他人所指出的那样,您正在使用scanf_s()读取整数,但要与switch语句中的字符文字进行比较。
switch'3':
应写为switch 3:
(使用整数文字)。同样适用于0案例。
此外,您的示例在}
之前缺少大括号while(I != 0);
。
值得一提的是,scanf_s()"返回成功转换并分配的字段数" (来自https://msdn.microsoft.com/en-us/library/w40768et.aspx)。也就是说,默认开关情况下的scanf_s()调用只会在读取单个整数时返回0或1(或出错时为EOF)。