使用相等运算符=比较C中的两个字符串是否相等int main (int argc, **argv){
if (argv[1] == "-hello")
printf("True\n");
else
printf("False\n");}# ./myProg -hello
False为什么?我意识到strcmp(argv[1], "-hello") == 0返回真实.。但是为什么我不能使用相等运算符来比较两个C字符串呢?
3 回答
墨色风雨
TA贡献1853条经验 获得超6个赞
char*
德玛西亚99
TA贡献1770条经验 获得超3个赞
在……里面C因为,在大多数上下文中,数组“衰减为指向其第一个元素的指针”。
所以,当你有一个数组"foobar"在大多数情况下,它会退化为指针:
if (name == "foobar") /* ... */; /* comparing name with a pointer */
你想让它比较数组的内容带着某物..你可以手动完成
if ('p' == *("foobar")) /* ... */; /* false: 'p' != 'f' */
if ('m' == *("foobar"+1)) /* ... */; /* false: 'm' != 'o' */
if ('g' == *("foobar"+2)) /* ... */; /* false: 'g' != 'o' */
或自动
if (strcmp(name, "foobar")) /* name is not "foobar" */;
- 3 回答
- 0 关注
- 378 浏览
添加回答
举报
0/150
提交
取消