Почему мой strcmp всегда возвращает true? - PullRequest
0 голосов
/ 28 декабря 2011

Я пытаюсь сравнить пользовательский ввод текста из приложения iphone с текстом в статическом массиве, который я объявил. Он всегда возвращает «true», даже если текст отличается. После выполнения strncmp я отображаю оба текстовых поля. Для человеческого глаза они - то, что я ожидаю от полей. Отладочное сообщение, которое я возвращаю на экран, показывает, какие значения я ожидаю, но сравнение всегда выполняется. Мы ценим любые предложения. Спасибо.

if (strncmp(SymbolEntered.text, 
[NSString stringWithCString:elements_table2[idx].element_symbol],2)==0)
{   
    DebugMsg.text = [NSString stringWithCString:"Correct answer"];
}
else 
{
    DebugMsg.text = [NSString stringWithCString:"Incorrect!"];
}

DebugMsg2.text = SymbolEntered.text;
DebugMsg3.text = [NSString stringWithCString:elements_table2[idx].element_symbol];

1 Ответ

7 голосов
/ 28 декабря 2011

Вы действительно должны сделать это с NSString, в котором реализовано множество методов сравнения, вместо CString (почему вы используете CString?). strcmp не работает с NSString.

if([SymbolEntered.text isEqualToString:[NSString stringWithCString:elements_table2[idx].element_symbol]]) {
    DebugMsg.text = @"Correct answer";
} else {
    DebugMsg.text = @"Incorrect answer";
}

Также вместо:

DebugMsg.text = [NSString stringWithCString:"Correct answer"];

Вы можете сделать это:

DebugMsg.text = @"Correct answer";
...