0

我正在尝试使用 ncurses 来获得非阻塞输入。

 #include <iostream>
 #include <ncurses.h>
 int main()
 {
     char ch;
     nodelay(stdscr, TRUE);
     while(1)
     {
          ch= getch();
          if (ch == ERR) {
               printf("here \n");
               usleep(100000);
          }
           else {
                 printf("---------------\n");
           }

     }
 }

但是,当我运行此代码时,无论我按什么,我总是只会打印“这里”。

样本输出:

Latitude-E6430:~$ ./try 

here 
 here 
here 
here 
   here 
   here 
   here 
    here 
   here 
   here 
   here 
    here 
   here 
   here 
   here 
    here 
   here 
   here 
   here 
    here 
   here 
   here 
  here 
dhere
ddhere 
dhere 
here 

根本没有检测到 d 和空格。

有人能告诉我为什么吗?

谢谢。

4

1 回答 1

0

最后我找到了问题的答案。

我需要做 initscr();

之后我能够正确打印出来(虽然格式不符合预期)。

正确代码:

 #include <iostream>
 #include <ncurses.h>
 int main()
 {
     char ch;

     initscr();
     nodelay(stdscr, TRUE);
     while(1)
     {
          ch= getch();
          if (ch == ' ') {
 //              printf("here \n");
               usleep(100000);
          }
           else {
                 printf("---------------\n");
           }

     }
 }
于 2013-07-09T16:18:26.743 回答