Операционная система UNIX. Руководство программиста




Ввод


Подпрограммы curses, предназначенные для чтения с текущего терминала, подобны тем, которые содержатся в stdio(3S) и читают из файла. Они позволяют:

  • Читать символы по одному: getch().
  • Читать строку, заканчивающуюся символом перевода строки: getstr().
  • Сканировать вводимые символы, извлекая значения и присваивая их переменным из списка аргументов: scanw().

Первичной подпрограммой является getch(), которая обрабатывает и возвращает значение одного введенного символа. Она подобна подпрограмме getchar(3S) из библиотеки языка C, за исключением того, что она может производить некоторые зависящие от системы или терминала действия, которые не выполняет getchar(). Например, getch() можно использовать совместно с подпрограммой keypad() из библиотеки curses. Это позволяет программе распознавать и обрабатывать, как один символ, последовательности, начинающиеся с ESC, которые передаются, например, при нажатии клавиш управления курсором или функциональных клавиш. Дополнительную информацию о keypad() см. в описаниях getch() и keypad() в curses(3X).

Ниже описываются основные подпрограммы для ввода с терминала и даются примеры их использования.

getch( )

СИНТАКСИС
 

#include <curses.h>

int getch ( )

ОПИСАНИЕ
  getch() читает один символ с текущего терминала.

getch() возвращает значение этого символа или ERR при возникновении ситуации "конец файла", получении сигнала, или при чтении без ожидания, если символ еще не введен.

getch() является макросом.

См. далее, а также в curses(3X) описания echo(), noecho(), cbreak(), nocbreak(), raw(), noraw(), halfdelay(), nodelay() и keypad().

ПРИМЕР
  #include <curses.h>

main () { int ch; initscr (); cbreak (); /* Пояснения см. в разделе "Опции ввода" */ addstr ("Введите любой символ: "); refresh (); ch=getch (); printw ("\n\n\nВы ввели '%c'.\n", ch); refresh (); endwin (); }

Посмотрим, что выводит эта программа. Первый refresh() выводит цепочку символов, указанную в addstr(), из stdscr на экран терминала:




Содержание  Назад  Вперед