strcmp无法正常工作?

时间:2012-12-11 18:28:06

标签: c string strcmp

我有一个strcmp函数:

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

由于某种原因,它不会进入if语句,即使我确定userinput肯定等于是。任何人都有任何线索错误吗?

4 个答案:

答案 0 :(得分:3)

  1. 确保您包含正确的标题,即<string.h>
  2. 如果您从{例如}获得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
}