2012-07-01 26 views
1

考慮以下代碼:如何使用getch()(來自curses庫)?

關鍵的
if(initscr() == NULL) ERROR("Cannot start ncurses mode.\n"); 

    keypad(stdscr, TRUE); 

    cbreak(); 

    int reply = getch(); 

    if(reply == 'y') 
     printw("yes!\n"); 
    else if(reply == 'n') 
     printw("no!\n"); 
    else 
     printw("invalid answer!\n"); 

    refresh(); 

    endwin(); 

獨立,我打字,程序關閉,不打印任何消息。

有人可以解釋這個程序的行爲嗎?提前致謝。

回答

2

您可以撥打printw()打印三條消息中的一條,然後打印refresh()以使消息顯示出來。到現在爲止還挺好。

然後您立即致電endwin(),這(取決於您的termcap/terminfo設置)可能會清除屏幕。

機會是實際顯示的信息;它只是不停留在屏幕上足夠長的時間來閱讀它。

嘗試在refresh()呼叫後添加一個延遲或另一個getch()呼叫。

0

如果在refresh()和endwin()之間插入sleep(5),應該會看到更好的結果。至少,我是。

相關問題