关于 while 循环内 switch 语句的问题,有很多帖子讨论,但我没有看到任何使用 C 语言完成的。C++ 可以创建布尔表达式,我知道这一点,但在 C 中不行。我有一个包含 switch 控制的 while 循环。然而,当我在 switch 中写 break 语句时,它会回到循环的开头,程序就会一直运行下去。请忽略我使用的函数,因为它们肯定是有效的。我只需要对嵌套处理做出一些澄清。感谢您的帮助!
Here is my main.c:
while(1)
{
printf("0) Exit\n1) List Tasks\n2) Add Task\n");
printf("3)Delete Task\n4) Add Task From File\n");
printf("What would you like to do?\n");
fgets(buf1, 50, stdin);
p = atoi(buf1);
switch(p)
{
case 0:
break;
case 1:
printTaskList(pTaskList);
break;
case 2:
printf("Enter task name: ");
fgets(buf2,100,stdin);
printf("Enter task priority: ");
fgets(buf3,100,stdin);
printf("Enter task start date: ");
fgets(buf4,50,stdin);
pTask = makeTask(buf2,buf4,buf3);
addTaskToEnd(pTaskList,pTask);
break;
case 3:
printTaskList(pTaskList);
printf("What task would you like to delete? ");
fgets(buf6,50,stdin);
taskNum = atoi(buf6);
removeTask(pTaskList,taskNum);
break;
case 4:
printf("Enter the filename ");
fgets(buf7,50,stdin);
break;
default:
printf("ERROR: %d: Incorrect menu option\n", p);
}
}
while(expression)
评估该标志以进行中断状态(即while(true)
变为while(stay_in_while)
),并且由您想要中断的 switch 代码清除stay_in_while
。 - WhozCraig_Bool
,如果你包含<stdbool.h>
,还有bool
、false
和true
。 - Jens Gustedt