2010-03-20 4 views
0

Скорее тривиальный вопрос.Сравните конкретный элемент массива со строкой с «if» в C?

Так что я попытался сделать это:

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

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

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

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

+2

Что такое 'array'? – GManNickG

ответ

8
if(array[0] == 'n') 

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

Примечание: 'a' является char и "a" является string, так что 'a' != "a"

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

+0

«" на самом деле означает char *, но вы по-прежнему правы в противном случае. –

+0

.. Но вы можете использовать только strcmp(), если строка имеет нулевое завершение или если размер массива обеих строк превышает длину n-1, вы можете использовать strncmp(). –

+0

@San: я не могу объяснить все подробно здесь :) –

0

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

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

пример вы дали, по существу похож на это:

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

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

Смежные вопросы