Доброго времени суток!
Как в консоли устроить интерактивный ввод? Т.е. без надобности переходить на новую строку, т.е. нажимать Enter. Просто нажал символ и он считался.
Интерактивный ввод в консоли
Модератор: Модераторы разделов
-
- Сообщения: 339
- Статус: hikki
- ОС: Arch
-
- Сообщения: 1923
Re: Интерактивный ввод в консоли
то, что вы описали как раз является неинтерактивным вводом.
И ещё. С чем связана необходимость такого, с позволения сказать, хитроподвыпернутого поведения?
P.S. Можно в bash небольшой скриптик наваять.
-
- Сообщения: 812
- ОС: Slackware64
Re: Интерактивный ввод в консоли
Извините, совсем забыл про остальные языки =) В C89-99.
Ну честно говоря я незнаю как это называется.
Ну скажем калькулятор.
И да, желательно на чистом C, curses меня не прельщает.
Ну честно говоря я незнаю как это называется.
И ещё. С чем связана необходимость такого, с позволения сказать, хитроподвыпернутого поведения?
Ну скажем калькулятор.
И да, желательно на чистом C, curses меня не прельщает.
-
- Сообщения: 339
- Статус: hikki
- ОС: Arch
Re: Интерактивный ввод в консоли
если на С, то можно сделать с помощью функции getchar()
хотя нет, эта функция как раз требует нажатия enter, а вот getch() - то, что надо, вот только эха нету, но это исправимо.
хотя нет, эта функция как раз требует нажатия enter, а вот getch() - то, что надо, вот только эха нету, но это исправимо.
Blog: hikki-tech
-
- Сообщения: 812
- ОС: Slackware64
Re: Интерактивный ввод в консоли
Мне кажется, или она не стандартная? По крайней мере в Google.com ничего найти не могу, а справочник сейчас далеко.
-
- Сообщения: 3408
- Статус: аватар-невидимка
- ОС: openSUSE Tumbleweed x86_64
Re: Интерактивный ввод в консоли
getch() - это ncurses или виндосовская из conio.h (в поставке от MS и Borland такое).
-
- Сообщения: 339
- Статус: hikki
- ОС: Arch
Re: Интерактивный ввод в консоли
упс... сфейлился(
вот тут:
http://www.cyberforum.ru/cpp-linux/thread1...html#post931906
есть что-то по поводу считывания иp терминала не в построчном, а в посимвольном режиме
Blog: hikki-tech
-
- Сообщения: 3321
- Статус: Красный глаз тролля
- ОС: ArchLinux
Re: Интерактивный ввод в консоли
Код: Выделить всё
unsigned char read_console(){ // считываем данные с консоли
unsigned char rb;
struct timeval tv;
int retval;
tcgetattr( STDIN_FILENO, &oldt ); // открываем терминал для реакции на клавиши без эх
а
newt = oldt;
newt.c_lflag &= ~( ICANON | ECHO );
tcsetattr( STDIN_FILENO, TCSANOW, &newt );
fd_set rfds;
FD_ZERO(&rfds);
FD_SET(STDIN_FILENO, &rfds); // 0 - стандартный вход
tv.tv_sec = 0; tv.tv_usec = 10000; // ждем 0.01с
retval = select(1, &rfds, NULL, NULL, &tv);
if (!retval) rb = 0;
else {
if(FD_ISSET(STDIN_FILENO, &rfds)) rb = getchar();
else rb = 0;
}
tcsetattr( STDIN_FILENO, TCSANOW, &oldt );
return rb;
}
RTFM
-------
KOI8-R - патриотичная кодировка
-------
KOI8-R - патриотичная кодировка
