gpt4 book ai didi

c - while 循环内的 switch 语句。我如何重复用户的选择?

转载 作者:行者123 更新时间:2023-11-30 15:02:35 24 4
gpt4 key购买 nike

我需要修改什么,以便提示用户选择的原始语句(两个 printfs)在用户做出选择后不断重复?例如:

while(1) {
printf("What would you like to do next? \n");
printf("\tC to create more\n\tD to display\n\tI to insert at beginning\n\tN to exit\n");

scanf(" %c", &response);
switch(response) {
case 'C' : create(); scanf(" %c", &response);
case 'D' : display(); scanf(" %c", &response);
case 'I' : insert_at_beg(); scanf(" %c", &response);
case 'N': exit(0);
default : printf("Invaild choice. Bye\n"); exit(0);
}
}

我知道我的逻辑在某些地方到处都是。

最佳答案

这里有两个问题。

其中一个是:

您没有在大小写之间使用break语句。在您的情况下,无需在每种情况后放置 scanf 语句,只需将 switch 中的所有 scanf 替换为 break 即可。如果有超过 1 种情况,则必须使用中断。因为 switch 不能替代 if ... else 语句。

第二个是:

它会进入无限循环,因为如果匹配失败,scanf() 将不会消耗输入 token 。 scanf() 将尝试一次又一次地匹配相同的输入。你需要刷新标准输入。 (刷新输入流会调用未定义的行为。这是严格禁止的行为。)。

if (!scanf(" %c", &response)) fflush(stdin);

否则试试这个

if (scanf(" %c", &response) == 0) { break; }

关于c - while 循环内的 switch 语句。我如何重复用户的选择?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40986907/

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