gpt4 book ai didi

c - C 语言中带有 switch case 的 while 循环不起作用

转载 作者:行者123 更新时间:2023-11-30 16:31:25 27 4
gpt4 key购买 nike

我正在尝试在 C 中执行此循环,您可以按 Enter 键并进入其中,然后按 0 退出或按 3 继续。但不知何故,开关命令没有被激活。请注意,每个结果都有不同的消息,应该将它们与其他结果区分开来。有人可以帮我理解这段代码的问题吗?`注意:代码显然是在 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!");

最佳答案

正如其他人所指出的,您正在使用 scanf_s() 读取整数,但与 switch 语句内的字 rune 字进行比较。
switch'3': 应写为 switch 3: (改为使用整数文字)。 0 的情况也是如此。

此外,您的示例在 while(I != 0); 之前缺少大括号 }

还值得一提的是,scanf_s()“返回成功转换和分配的字段数”(来自 https://msdn.microsoft.com/en-us/library/w40768et.aspx )。也就是说,默认 switch 情况下的 scanf_s() 调用在读取单个整数(或错误时 EOF)时只会返回 0 或 1。

关于c - C 语言中带有 switch case 的 while 循环不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50628173/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com