#c #curses
#c #проклятия
Вопрос:
Я пытаюсь разобраться в следующей программе на C :
#include <curses.h>
int main() {
int i;
initscr();
halfdelay(5);
for (i=0; i < 5; i )
getch();
endwin();
}
Но я не могу в этом разобраться. Я понимаю, что initscr()
происходит инициализация текущего экрана, и это getch()
ожидание ввода пользователем данных для разблокировки текущего терминала, но что это за цикл и halfdelay()
чего он добивается здесь?
Комментарии:
1. Вы пробовали поиск в Google? Доступно множество результатов ….!
2. ДА. Я попробовал поиск в Google.
3. Это недостаточно серьезно, чтобы «помечать», но, со всем уважением, я хотел бы отметить сообщение Ника как не добавляющее ничего полезного. Я погуглил «curses. halfdelay» и эта страница была самой верхней находкой! Смотрите вперед, ребята. Все есть где-то в Google!
Ответ №1:
halfdelay(n);
устанавливает режим ввода, при котором getch
функция ожидает n
десятые доли секунды (в вашем примере программы — полсекунды), пока пользователь введет что-либо. getch
возвращает нажатие клавиши, если только таймер не истечет, и в этом случае он возвращается ERR
. Этот режим можно снова отключить с помощью cbreak()
или nocbreak()
.
Это можно использовать в коде, который, например, запрашивает у пользователя подтверждение, но по умолчанию принимает некоторое значение, если он не отвечает в течение определенного периода времени.
Ответ №2:
halfdelay используется для отключения буферизации символов с 50-секундной проверкой на неактивность пользователя.
этот пример считывает 5 символов из пользовательского ввода. если пользователь неактивен в течение 0,5 секунды, то getch возвращает ERR с errno, установленным в EINTR.
Комментарии:
1. Полсекунды, а не 50 секунд.
2. @FredFoo Я отредактировал ответ, чтобы получить правильное значение.