如何在c中比较字符串

如何在c中比较字符串,c,string,C,String,我有下一个奇怪的情况: void refill (Car* car) { if ( car->model == "BM234" ) { car->fuel = 65; } else { car->fuel = 51; } } 我的结构车有一个叫做model的af字段,它是BM234。但是比较的结果是car->fuel=51为什么C的两个相等字符串不相等?如果car->model==BM234{ 这不是比较C中字符串的方法

我有下一个奇怪的情况:

void refill (Car* car) {
    if ( car->model == "BM234" ) {
        car->fuel = 65;
    } else {
        car->fuel = 51;
    }
}
我的结构车有一个叫做model的af字段,它是BM234。但是比较的结果是car->fuel=51为什么C的两个相等字符串不相等?

如果car->model==BM234{

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


用于比较C中的字符串。

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

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

if (strcmp (car->model, "BM234") == 0) ...
你可以用

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

如果你想使用==你必须为你的类或结构使用操作符重载

什么是car->model类型?StackOverflow中有一个搜索选项,请使用它,因为这样的常见问题已经被问了很多次。car->model的类型是char model[100]。我使用了搜索选项ans saw关于strcmp。但我这里的问题是为什么我的逻辑是错误的。我想解释一下。你的逻辑是错误的,因为C不允许这个符号来比较字符串。其他“逻辑”操作也是如此。例如,在Python中,你可以“加”和“乘”字符串:x=5*hello,这是正确的唉,“逻辑”和“语言允许的”之间有着巨大的区别。