Как отключить буферизацию ввода и эхо-вывод (termios.h, stdin)? Хочу сделать консольный слайдер для набора информации, т.е. нужно немедленное реагирование на нажатие клавиш для переключения слайдов.
Мне не помог вызов функций setbuf(stdin, NULL) и setvbuf(stdin, NULL, _IONBF, 0)
В книги Прата говорилось о функции ioctl для unix-подобных систем. помогите с ней разобраться?
Спасибо.

21 Авг 2019 в 06:49
205 +1
0
Ответы
1

Для отключения буферизации ввода и эхо-вывода ввода с клавиатуры можно использовать функцию tcgetattr и tcsetattr из библиотеки termios.h. Пример кода для отключения буферизации и эхо-вывода:

#include <stdio.h>
#include <termios.h>
#include <unistd.h>
void disableBuffering() {
struct termios t;
tcgetattr(STDIN_FILENO, &t);
t.c_lflag &= ~(ICANON | ECHO);
tcsetattr(STDIN_FILENO, TCSANOW, &t);
}
int main() {
disableBuffering();
// ваш код для консольного слайдера
return 0;
}

Этот код отключит буферизацию и эхо-вывод для стандартного ввода (stdin) и позволит вам немедленно реагировать на нажатие клавиш.

20 Апр в 13:12
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 92 588 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир