2016-10-22 50 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:@""];