Как прочитать строку из нескольких слов из стандартного ввода в Objective-C? - PullRequest
0 голосов
/ 28 апреля 2019

Попытка решить проблему, требующую чтения ввода из стандартного ввода. Если между словами нет пробелов, я могу прочитать стандартный код, используя код:

Введите:

M
Blue 
Balae

Код:

NSString *word;
char word_temp[50];
while ( scanf("%s",word_temp) >= 1){   
    word = [NSString stringWithFormat:@"%s", word_temp];
    printf("%s \n",[word UTF8String]);
}

Выход (как и ожидалось):

M 
Blue 
Balae 

Если входные слова имеют пробел, приведенный выше код будет печатать слово после пробела до следующей строки, потому что scanf будет считывать символы в буфер, пока не встретит пробел или символ новой строки. Чтобы решить эту проблему, я изменил спецификатор формата scanf так что он должен читать в буфер, пока не встретит символ новой строки.

Введите:

M
Blue Whale
Balae

Код:

NSString *word;
char word_temp[50];
while ( scanf("%[^\n]s]",word_temp) >= 1){       
      word = [NSString stringWithFormat:@"%s", word_temp];
      printf("%s \n",[word UTF8String]);
 }

Ожидаемый результат:

M
Blue Whale
Balae

Фактический объем производства:

// ~ no response on stdout ~

Как прочитать строку с несколькими словами и пробелами и преобразовать ее в NSString Object?

1 Ответ

0 голосов
/ 28 апреля 2019

scanf() не принимает регулярные выражения в качестве шаблона ввода.

Если вы хотите получить одну строку ввода в виде строки, вы можете использовать функцию C getline().

...