C если условие не работает, как ожидалось - PullRequest
4 голосов
/ 20 сентября 2009

All

Я из мира Java и PHP, так что это может быть фактором. Но у меня проблема с:

printf("%s\n",data[0]);

if(data[0] == "BG01") {
    printf("%s\n",otherstring);
}

Проблема в том, что первый printf возвращается в консоли "BG01", но по какой-то причине условие IF не срабатывает, а второй printf никогда не выполняется.

Что не так с этой картинкой?

Спасибо, ГЭ

Ответы [ 2 ]

12 голосов
/ 20 сентября 2009

То, как вы делаете это сейчас, заключается в том, что вы сравниваете 2 указателя вместо строк, на которые они указывают. Эти указатели могут указывать на одно и то же значение, но расположены в самых разных местах памяти и поэтому не соответствуют действительности.

Способ сделать это - использовать функцию strcmp (string1, string2), которая будет проверять сами строки, а не указатели.

8 голосов
/ 20 сентября 2009

В C вы должны использовать strcmp(), так же, как вы должны использовать .equals() в Java:

if (strcmp(data[0], "BG01") == 0) ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...