Objective C — Как сравнить строку с консоли

#ios #objective-c #string-comparison

#iOS #цель-c #сравнение строк #objective-c

Вопрос:

Мой код всегда возвращает «fail» для следующего сравнения строк с использованием isEqualToString . Каков правильный способ сравнения строк, поступающих с консоли?

 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");
}
  

Комментарии:

1. Какой журнал вы получили из этого NSLog (@»Вы ввели % @», s); ?

2. Отладчик, точка останова, проверка содержимого переменной, отладочный вывод… Все, что нужно знать, и намного быстрее, чем в Интернете. Пожалуйста, научитесь их использовать, и если вы уже это сделали, пожалуйста, добавьте то, что вы узнали из этого, в вопрос.

3. в журнале, который я получил, указано введенное значение, например, hello. на самом деле моя проблема в том, что когда я ввел строку для сравнения, даже если она правильная, она всегда переходит в NSLog (@»fail»);

Ответ №1:

Результат fgets содержит » n», поэтому вам нужно определить свой «n» следующим образом:

 NSString *n = @"exitn";
  

Или удалите » n» из «s»:

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