Вы можете контролировать чтение с помощью аргумента «размер буфера» в байтах:
b = io.read(1)
В этом случае чтение завершается после того, как первый байт был взят из ввода.Остальные входные байты будут доступны для следующего оператора «read».Важное примечание: если вы введете «1» и нажмете «Enter», для чтения будет 3 байта (включая «\ r \ n»).
Подробнее см. https://www.lua.org/pil/21.1.html.
Кроме того, вы хотите знать способ очистки входного буфера перед следующим чтением.Это просто: используйте оператор io.read ("* line") следующим образом:
b = io.read("*line") -- suppose, input is: "1234"
b = string.sub(b, 0, 1)
print(b) -- prints 1
b = io.read("*line") -- suppose, input is: "567"
b = string.sub(b, 0, 1)
print(b) -- prints 5
b = io.read("*line") -- suppose, input is: ""
b = string.sub(b, 0, 1)
print(b) -- prints empty string
io.read ("* line") получает целую строку из ввода, но вы можете взять только первый символиз него.