C字符串比较失败?

时间:2011-04-27 02:39:36

标签: c unix string-comparison

  

可能重复:
  C String — Using Equality Operator == for comparing two strings for equality

我有以下代码;

#include <stdio.h>
#define MAXLINE 2600
char words[4][MAXLINE];
int i;

int main(){

    printf("Enter menu option: ");

    scanf("%s", words[i]);

    printf ("\n %s was entered!", words[i]);

    if (words[i]=="help"){
        printf("\nHelp was requested");
    } 
    else 
    { 
        printf("\nCommand not recognized!"); 
    }

}

if语句中的数组求值不起作用。我显然做错了什么。有人可以向我解释一下吗?

2 个答案:

答案 0 :(得分:5)

您正在比较words[i]"help"指针的相等性,而不是字符串相等性。我想你的意思是:if (strcmp(words[i], "help") == 0) {

答案 1 :(得分:0)

在C中,字符串(字符序列)被视为字符数组。因此,您不应使用==运算符比较数组。

数组大括号[]只是语法糖来隐藏在引擎盖下发生的指针算法。通常,arr[i]*(arr + i)相同。使用这些信息,我们来看看您的比较:

words[i] - &gt; *(words + i),它是一个指针到一个字符数组。

如果您想比较字符串,请使用strncmp