2009-09-20 323 views
4

全部,C如果條件不能按預期工作

我來自java和php世界,所以這可能是一個因素。 但是我有一個問題:

printf("%s\n",data[0]); 

if(data[0] == "BG01") { 
    printf("%s\n",otherstring); 
} 

的問題是,在控制檯「BG01」,但由於某些原因,如果條件不拿起它,並在第二個printf第一個printf回報永遠不會被執行。

這張圖片有什麼問題?

感謝, 專家組

回答

8

在C中,你必須使用strcmp(),就像你在Java中使用.equals()

if (strcmp(data[0], "BG01") == 0) ... 
+0

+1,但你爲什麼指責隨機認識java的人? ;-) – 2009-09-20 12:08:49

+2

OP說:「我來自java和php世界」,所以我總結認爲'.equals()'的知識將是一個有效的假設。 – 2009-09-20 12:10:37

+0

這是,我只是不知道如何在C攻擊這個。 感謝Greg,這很好。 – goe 2009-09-20 12:23:40

12

你現在正在做它的方式是,你比較2個指針而不是它們指向的字符串。這些指針可以指向相同的值,但位於內存中非常不同的位置,因此不成立。

執行此操作的方法是使用strcmp(string1,string2)函數,它將檢查字符串本身而不是指針。