0
我使用Linux和ncurses爲我的應用程序,我使用getch作爲非阻塞使用nodelay。問題在於,當用輸入的getch循環時,它總是錯過第一個字符。例如,輸入「Helloworld」將打印爲「elloworld」。 我目前似乎沒有看到任何問題,雖然也許它是因爲我一直在盯着遠遠長的代碼,或者我錯過了一些東西。Ncurses,非阻塞getch錯過了第一個字符
while(TRUE)
{
gchar chr;
gchar *cmd = g_malloc(50);
if((getch()) == ERR)
{
// no user input
}
else
{
gint i = 0;
while((chr = getch()) != '\n')
{
cmd[i] = chr;
waddch(ncurse->window, chr);
wrefresh(ncurse->window);
i++;
}
waddstr(ncurse->log, cmd);
wrefresh(ncurse->log);
wmove(ncurse->window, ncurse->window->_maxy, 2);
wclrtoeol(ncurse->window);
wrefresh(ncurse->window);
}
g_free(cmd);
}
感謝您爲我們帶來了一雙清新的眼睛,並推向正確的方向,現在它已經固定下來了。 – Bennu