可能重复:
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语句中的数组求值不起作用。我显然做错了什么。有人可以向我解释一下吗?
答案 0 :(得分:5)
您正在比较words[i]
和"help"
指针的相等性,而不是字符串相等性。我想你的意思是:if (strcmp(words[i], "help") == 0) {
答案 1 :(得分:0)
在C中,字符串(字符序列)被视为字符数组。因此,您不应使用==
运算符比较数组。
数组大括号[]
只是语法糖来隐藏在引擎盖下发生的指针算法。通常,arr[i]
与*(arr + i)
相同。使用这些信息,我们来看看您的比较:
words[i]
- &gt; *(words + i)
,它是一个指针到一个字符数组。
如果您想比较字符串,请使用strncmp。