我正在尝试在程序内部添加一个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中的第一个字符不是ncnd中的第一个字符,请进入循环。


这是不可伪造的,因为y总是不是cnd[0]或不是n-不能同时存在。

您应该问:


  如果y中的第一个字符不是cnd,并且n中的第一个字符不是cnd,请进入循环。

07-25 20:20