使用相等運算符=比較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條經(jīng)驗 獲得超6個贊
char*

德瑪西亞99
TA貢獻1770條經(jīng)驗 獲得超3個贊
在……里面C因為,在大多數(shù)上下文中,數(shù)組“衰減為指向其第一個元素的指針”。
所以,當你有一個數(shù)組"foobar"在大多數(shù)情況下,它會退化為指針:
if (name == "foobar") /* ... */; /* comparing name with a pointer */
你想讓它比較數(shù)組的內(nèi)容帶著某物..你可以手動完成
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 關注
- 408 瀏覽
添加回答
舉報
0/150
提交
取消