比較字符串我的下一個奇怪的現象:如何在C
void refill (Car* car) {
if (car->model == "BM234") {
car->fuel = 65;
} else {
car->fuel = 51;
}
}
我的結構車有AF場稱爲模型,它是「BM234」。但比較的結果是小車 - >燃料= 51(((爲什麼對C兩個相等的字符串不相等?
比較字符串我的下一個奇怪的現象:如何在C
void refill (Car* car) {
if (car->model == "BM234") {
car->fuel = 65;
} else {
car->fuel = 51;
}
}
我的結構車有AF場稱爲模型,它是「BM234」。但比較的結果是小車 - >燃料= 51(((爲什麼對C兩個相等的字符串不相等?
您可以使用
strcmp(car->model,"BM234")==0
如果你想==必須使用operator overloading
您的類或結構
C語言中的==操作符比較指針。所以,如果你有兩個不同的指針,都指向完全相同的文字串,結果將是0還是fals即
比較字符串使用strcmp。如果兩個字符串相等,則strcmp返回0;如果第一個字符串應該在第二個字符串之前排序,則返回負數;如果第一個字符串應該排序在第二個字符串之後,則爲正數。所以,你會寫
if (strcmp (car->model, "BM234") == 0) ...
什麼是小車 - >模型類型使用? – mrVoid 2014-09-12 12:54:22
在StackOverflow中有一個搜索選項,請用它作爲這樣一個常見的問題已經被問過很多次了。 – Jack 2014-09-12 12:56:38
car-> model的類型是char型[100]。我用搜索選項ans看到關於strcmp。但我的問題在於爲什麼我的邏輯錯誤。我想要打開它。 – user3402740 2014-09-12 13:00:45