如何比较c中的字符串

时间:2014-09-12 12:53:17

标签: c string

我有下一个奇怪的情况:

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

我的结构车有一个名为model的af字段,它是" BM234"。但比较的结果是car-> fuel = 51(((为什么C的两个相等的字符串不相等?

3 个答案:

答案 0 :(得分:0)

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

这不是比较C中字符串的方法。 ==用于比较单个字符。

使用strcmp来比较C中的字符串。

答案 1 :(得分:0)

C中的==运算符比较指针。因此,如果您有两个不同的指针,两者都指向具有完全相同字符的字符串,则结果将为0或false。

要比较字符串,请使用strcmp。如果两个字符串相等,则strcmp返回0;如果第一个字符串应在第二个字符串之前排序,则返回负数;如果第一个字符串应在第二个字符串之后排序,则返回正数。所以你会写

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

答案 2 :(得分:0)

您可以使用

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

如果您想使用==,您必须使用operator overloading作为您的班级或结构