2016-10-22 164 views
0

我的代码在使用isEqualToString时对于以下字符串比较总是返回“失败”。比较来自控制台的字符串的正确方法是什么?Objective C - 如何比较控制台中的字符串

char buf[MAX_LENGTH]; 
fgets(buf, MAX_LENGTH, stdin); 

NSString *s = [[NSString alloc] initWithUTF8String:buf]; 

NSLog(@"You typed %@", s); 
NSString *n = @"exit"; 

if ([n isEqualToString:s]) { 
    NSLog(@"success!"); 
} else { 
    NSLog(@"fail"); 
} 
+0

你从这个NSLog得到的日志是什么(@“You typed%@”,s); ? – Arun

+1

调试器,断点,检查变量内容,调试输出...所有需要知道的事情,比网络快得多。请学会使用它们,如果您已经这样做了,请将您从中学到的知识添加到问题中。 –

+0

我得到的日志是例如输入的值你好 。其实我的问题是当我输入一个字符串来比较,即使它正确,它总是分支到NSLog(@“失败”); –

回答

1

与fgets的结果中包含 “\ n”,因此,你需要定义你的 “N” 是这样的:从 “S”

NSString *n = @"exit\n"; 

或删除 “\ n”:

NSString *s = [[NSString alloc] initWithUTF8String:buf]; 
s = [s stringByReplacingOccurrencesOfString:@"\n" withString:@""];