2017-05-30 100 views
-3
int main(void) 
{ 
    char co; 

     printf("Enter item code: "); 
     scanf("%s", co); 

    if(co == "ST200") 
    { 
     a1 += price * no * 0.90; 
    } 

} 

警告:指針和整數 之間的比較,如果(共==「ST200」 & &卡==「Y」)警告:指針和整數之間的比較

我正在recieving後這樣的消息compling。

+0

要比較C中的兩個字符串,您需要使用['strcmp'](http://en.cppreference.com/w/c/string/byte/strcmp)。任何[良好的初學者書籍](http://stackoverflow.com/questions/562303/the-definitive-c-book-guide-and-list)都會告訴你。 –

+0

更糟糕的是,因爲您嘗試僅使用一個未初始化的字符來讀取字符串。 C中的字符串是一個*數組*,以零結尾。 *還有* [一個很好的初學者書](http://stackoverflow.com/questions/562303/the-definitive-c-book-guide-and-list)會告訴你。所以請立即停下來,去找一本書,並閱讀它。 –

回答

3

您製作了co一個字符,但%s用於字符串。

另外:

if(co == "ST200") 

由於"ST200"是一個指向常數和co不指向一個常數,這兩個永遠不可能相等。那麼這個比較有什麼意義呢?

說白了,在嘗試編寫使用它們的代碼之前,您需要學習如何在C中處理字符串。

0

寫這個程序的正確方法是。

#include <stdio.h> 
#include <string.h> 
int main(void) 
{ 
    char co[10]; 
    printf("Enter item code: "); 
    scanf("%s", co); 

if(!strcmp("ST200",co)) 
{ 
    a1 += price * no * 0.90; 
} 
} 

co需要是一個數組來存儲字符串。爲了進行比較,您需要使用strcmp(const char *Str1,const char *Str2),當兩個字符串匹配時,這將導致零。因此,以前使用非運算符。 另請參閱任何基本的C書。希望這有助於:)

相關問題