2014-09-12 53 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) ...