Сравните конкретный элемент массива со строкой с «если» в C? - PullRequest
0 голосов
/ 20 марта 2010

Довольно тривиальный вопрос.

Итак, я попытался сделать это:

if (array[0]=="some_string")

где array - список строк

array[0] = "some_string_1";
array[1] = "some_string_2";
array[2] = "some_string_3";

но, очевидно, это не работает ... Что мне делать?

Ответы [ 2 ]

8 голосов
/ 20 марта 2010
if(array[0] == 'n')

"" означает string
'' означает char

Примечание: 'a' - это char, а "a" - это string, поэтому 'a' != "a"

char - это один символ (на самом деле int), поэтому, если вы хотите сравнить строки, используйте strcmp.

0 голосов
/ 20 марта 2010

в приведенном вами примере вы сравниваете один символ (массив [0]) с адресом скомпилированной строки ("some_string").

Поскольку строковый литерал обрабатывается как массив символов с нулевым символом в конце, а сравнение с массивом символов с помощью оператора == сравнивает адрес массива.

Пример, который вы привели, похож на этот:

char* x = "some_string";
char array[10];
if(array[0] == x)
    ...

И из этого примера видно, что типы просто не совпадают. Как сказал другой участник, вы используете оператор [] для получения определенного символа из смещения в скобках от начала массива.

...