2014-09-12 44 views
-3

比較字符串我的下一個奇怪的現象:如何在C

void refill (Car* car) { 
    if (car->model == "BM234") { 
     car->fuel = 65; 
    } else { 
     car->fuel = 51; 
    } 
} 

我的結構車有AF場稱爲模型,它是「BM234」。但比較的結果是小車 - >燃料= 51(((爲什麼對C兩個相等的字符串不相等?

+0

什麼是小車 - >模型類型使用? – mrVoid 2014-09-12 12:54:22

+3

在StackOverflow中有一個搜索選項,請用它作爲這樣一個常見的問題已經被問過很多次了。 – Jack 2014-09-12 12:56:38

+0

car-> model的類型是char型[100]。我用搜索選項ans看到關於strcmp。但我的問題在於爲什麼我的邏輯錯誤。我想要打開它。 – user3402740 2014-09-12 13:00:45

回答

0

您可以使用

strcmp(car->model,"BM234")==0 

如果你想==必須使用operator overloading您的類或結構

0

if (car->model == "BM234") {

這不是方式C比較字符串。==用於比較單個字符。

使用strcmpC比較字符串。

0

C語言中的==操作符比較指針。所以,如果你有兩個不同的指針,都指向完全相同的文字串,結果將是0還是fals即

比較字符串使用strcmp。如果兩個字符串相等,則strcmp返回0;如果第一個字符串應該在第二個字符串之前排序,則返回負數;如果第一個字符串應該排序在第二個字符串之後,則爲正數。所以,你會寫

if (strcmp (car->model, "BM234") == 0) ...