我有下一个奇怪的情况:
void refill (Car* car) {
if ( car->model == "BM234" ) {
car->fuel = 65;
} else {
car->fuel = 51;
}
}
我的结构车有一个名为model的af字段,它是" BM234"。但比较的结果是car-> fuel = 51(((为什么C的两个相等的字符串不相等?
答案 0 :(得分:0)
答案 1 :(得分:0)
C中的==运算符比较指针。因此,如果您有两个不同的指针,两者都指向具有完全相同字符的字符串,则结果将为0或false。
要比较字符串,请使用strcmp。如果两个字符串相等,则strcmp返回0;如果第一个字符串应在第二个字符串之前排序,则返回负数;如果第一个字符串应在第二个字符串之后排序,则返回正数。所以你会写
if (strcmp (car->model, "BM234") == 0) ...
答案 2 :(得分:0)
您可以使用
strcmp( car->model,"BM234")==0
如果您想使用==,您必须使用operator overloading
作为您的班级或结构