我正在尝试在程序内部添加一个while循环。执行后,应该询问您是否要继续,如果要继续,请键入“ y”,否则请键入“ n”。如果他们这样做了,应该重新开始,否则就停止。
问题是,如果有人键入“ y”或“ n”以外的内容来要求他们这样做,那么我想弹出一条消息。问题是while循环将继续进行,无论他们写入什么内容。
char cnd[100];
while(cnd[0] != 'n') {
printf("Program executing\n");
printf("Would you like to launch the program again? If not then type in 'n', if you do then type in 'y': ");
scanf("%s", &cnd);
while(cnd[0] != 'n' || cnd[0] != 'y') {
printf("You have to type in either 'y' or 'n':");
scanf("%s", &cnd);
}
}
return 0;
我什至试图通过在语句前后打印用户输入来测试这一点。这似乎是正确的,所以我不知道为什么while循环不起作用。
最佳答案
让我们将循环条件翻译成简单的英语:cnd[0] != 'n' || cnd[0] != 'y'
基本上,您是在说:
如果cnd
中的第一个字符不是n
或cnd
中的第一个字符,请进入循环。
这是不可伪造的,因为y
总是不是cnd[0]
或不是n
-不能同时存在。
您应该问:
如果y
中的第一个字符不是cnd
,并且n
中的第一个字符不是cnd
,请进入循环。