【发布时间】:2012-12-14 12:12:12
【问题描述】:
我正在尝试在 C 中使用 ncurses 实现游戏。我必须显示当前时间(时间必须每秒更新),而我的 while 循环看起来像这样
while(1)
{
clk = time(NULL);
cur_time = localtime(&clk);
mvprintw(0,1,"%d %d %d",cur_time->tm_hour,cur_time->tm_min,cur_time->tm_sec);
int key = getch()
//other stuff
}
我的问题是只有当我按下一个键时时间才会刷新。这是一种无需按键即可刷新时间(并同时实现此功能)的方法吗?
【问题讨论】:
-
问题出在标准输入上的阻塞 I/O。您需要一种使用非阻塞 I/O 的方法。 (我不知道 (n)curses 是否实现了某种使用非阻塞 I/O 的方式。我猜是的)
-
(实验性)函数 wgetch_events() 似乎可以满足您的需求。 (注:我没用过,只是在ncurses.h里查的)