我有一个strcmp函数,如下所示:
if (strcmp(userInput, "Yes") == 0)
出于某种原因,它不会进入if语句,尽管我确信userinput肯定等于Yes。有人知道怎么了吗?
- 确保包含正确的标头,即
<string.h>
- 如果您从例如
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
}