为什么我的strcmp总是返回true?

时间:2011-12-28 15:53:20

标签: iphone objective-c strncmp

我正在尝试将来自iphone应用的用户文本输入与我声明的静态数组中的文本进行比较。它总是返回“真实”,即使文本不同。执行strncmp后,我会显示两个文本字段。对于人眼来说,它们就是我所期待的领域。我返回到屏幕的debugmsg显示了我期望的值,但比较始终是真实的。任何建议,将不胜感激。感谢。

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 个答案:

答案 0 :(得分:7)

你真的应该使用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";

你可以这样做:

{{1}}