2013-07-21 52 views
0

我想比較兩個const char *代碼如下。兩個字符指針的比較

void compare(const char *name){ 
      const char *name1; 

      if(!strcmp(*name,*name1){ 
        printf("true"); 
      } 
} 

錯誤是:從 '字符' 到 '爲const char *' 我需要幫助無效的轉換。

回答

7
if(!strcmp(name,name1)) 

- 你的變量namename1已經是三分球。

但是,單憑這一點不會神奇地使它工作。爲什麼要比較name1的未初始化值?

+1

添加第二個「) '在strcmp之後。計算括號! – usr2564301

+0

非常感謝你name1是一個const char *的結構:-)再次感謝你。 –

+0

你說name和name1已經是指針了,這可能意味着*給出了一個指向變量的指針,而不是。 &給出地址。在這方面,Joni的答案可能更清楚。 – Joe

1

到strcmp應該是指向char,沒有字符,所以不尊重指針的參數,你已經有了:

if (!strcmp(name,name1)) { 
5

你已經在使用指針,因爲字符*是字面意思是「字符指針」。你只需要把*出來。但請注意,strcmp比較字符串,而不是字符或指針。我不知道你正在嘗試做的,但如果你正在尋找比較,如果它們是同一個對象,只是做:

if (name1 == name2) ... 

但是,如果你是比較它們的內容,你需要他們提領:

if (*name1 == *name2) ... 

如果他們是字符串,然後只需使用:

if (strcmp(name1, name2) == 0) ... 

希望這有助於