如果字符串与两个关键字匹配,则验证字符串

问题描述 投票:0回答:1

我正在尝试创建一个程序,其中将使用strcmp()进行字符串验证,其中该程序只会收到“是”或“否”。我认为这个do-while循环应该可以解决问题:

char input[11];

do
{
    printf("Would you like some coffee[yes/no]: ");
    scanf("%[^\n]", input);
    fflush(stdin);
}while (strcmp(input, "yes") != 0 || strcmp(input,"no") != 0);

if(strcmp(input, "yes") == 0)
{
    printf("Here is the coffee.\n");
}

else
{
    printf("What a shame.\n");
}

但是,当我对其进行测试时,循环不会停止。我确实怀疑这是由字符串长度的差异引起的,但我感觉好像缺少了其他东西。还有另一种方法可以验证字符串,以便可以验证它是“是”还是“否”?如何解决此问题?

c validation
1个回答
0
投票

strcmp函数在两个给定的字符串不相等时返回非零。因此,您的条件为“只要输入不是'yes'或输入不是'no',就循环”。

如果输入为“是”,则第一部分为false,但第二部分为true,因此整个条件为true。如果输入为“ no”,则同样。所以你有一个无限循环。

如果字符串不是“ yes”并且字符串不是“ no”,则要循环。

}while (strcmp(input, "yes") != 0 && strcmp(input,"no") != 0);
© www.soinside.com 2019 - 2024. All rights reserved.