2013-04-20 6 views
2

Редактировать: Это дубликат, и я отметил его как таковой. См. [Вопрос] Why is "a" != "a" in C?C: Как сравнить две строки?

Так что я пытаюсь распечатать конкретное сообщение в зависимости от поля внутри структуры. Поле содержит строку «1».

Всякий раз, когда я запускаю printf("%s", record.fields[2]);, выход 1; У меня нет предупреждений о формате.

Однако, когда я проверяю поле против соответствующей строки (в данном случае, «1»), он не проходит проверку:

if (record.fields[2] == "1") { 
    printf("The field is 1!"); 
} 

ответ

2

Вы должны использовать strncmp для сравнения строк:

if (strncmp(record.fields[2], "1", 1) == 0) ... 

Вам нужно сравнить с нолем, потому что strcmp возвращает ноль, когда две строки идентичны.

Однако, похоже, что вы не сравниваете строки: скорее, вы ищете конкретный символ внутри строки. В этом случае вам необходимо использовать символьную константу вместо строкового литерала (с одинарными кавычками):

if (record.fields[2] == '1') ... 
+1

В случае record.fields является '' символ *, OP следует использовать символ «1», как цель сравнения – hd1

+0

@ hd1 Вы правы, strncmp лучше. Ред. Благодаря! – dasblinkenlight

+1

@PolyShell Пожалуйста, взгляните на редактирование. – dasblinkenlight

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