我有一个strcmp函数:
if (strcmp(userInput, "Yes") == 0)
由于某种原因,它不会进入if语句,即使我确定userinput肯定等于是。任何人都有任何线索错误吗?
答案 0 :(得分:3)
<string.h>
。userInput
fgets()
,确保最后没有行终止,这会干扰这样的比较。答案 1 :(得分:2)
为了避免尾随换行符的问题,您可以检查前3个字符:
if(strncmp(userInput, "Yes", 3) == 0)
答案 2 :(得分:1)
原样,你的代码很好。那不是问题。
我怀疑你是这样做的:
fgets(userInput, sizeof(userInput), stdin);
if(strcmp(userInput, "Yes") == 0)
这给你一个换行符:
['Y']['e']['s']['\n']
您可以通过多种方式解决问题:
if(strcmp(userInput, "Yes\n") == 0)
可能是最简单的。或者你可以通过scaf获得输入:
scanf("%s", userInput);
答案 3 :(得分:0)
如果您需要帮助,可以进行类型转换。
//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
}