C语言 strcmp not working?



我有一个strcmp函数,如下所示:

if (strcmp(userInput, "Yes") == 0)

出于某种原因,它不会进入if语句,尽管我确信userinput肯定等于Yes。有人知道怎么了吗?

  1. 确保包含正确的标头,即<string.h>
  2. 如果您从例如fgets()中获取userInput,请确保末尾没有行终止,这会干扰这样写的比较

为了避免拖尾换行,您可以只检查前3个字符:

if(strncmp(userInput, "Yes", 3) == 0)

按原样,您的代码很好。这不是问题所在。

我怀疑你在这么做:

fgets(userInput, sizeof(userInput), stdin);
if(strcmp(userInput, "Yes") == 0)

这给了你一个换行符:

['Y']['e']['s']['n']

你可以通过多种方式解决这个问题:

if(strcmp(userInput, "Yesn") == 0)

可能是最简单的。或者你可以通过scaf:获得输入

scanf("%s", userInput);

如果需要帮助,可以进行类型转换。

//I am assuming usrInput is a char Array
string str(usrInput);
//string class has a constructor that takes a NULL-terminated C-string
if (str == "Yes")
{
//do what ever you wanted to in the loop
}

最新更新