Чтение нескольких слов из пользователя / консоли с использованием fread в Erlang

Я хочу прочитать несколько слов и сохранить их в переменной, используя Erlang. Когда я использую fread для записи строки, она записывает только первое слово.

1> {ok,[Message]} = io:fread("Type your message : ", "~ts").
Type your message : Hello world
{ok,["Hello"]}
2>  world

Таким образом, "Hello" сохраняется в Message вместо "Hello world". Как я могу сохранить оба слова в переменной сообщения.

Я ищу общий ответ, чтобы я мог читать много слов, а не только 2 слова, поэтому, пожалуйста, не публикуйте ответы только для 2 слов.


Желаемый вывод

{ok,["Hello world"]}

1 ответ

Решение

Смотрите io:get_line/1

1> Line = io:get_line("Type your message: ").
Type your message: Hello world. Goodbye.
"Hello world. Goodbye.\n"

2> Line.
"Hello world. Goodbye.\n"

3> DesiredOutput = {ok, [string:strip(Line, right, $\n)]}.
{ok,["Hello world. Goodbye."]}

4> DesiredOutput.
{ok,["Hello world. Goodbye."]}

Линия:

Символы в строке заканчиваются переводом строки (или концом файла). Если устройство ввода-вывода поддерживает Unicode, данные могут представлять кодовые точки> 255 (диапазон latin1).

Другие вопросы по тегам