比较字符串我的下一个奇怪的现象:如何在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