Im, использующий Linux и ncurses для моего приложения, и я использую getch как неблокирующий, используя nodelay. Проблема в том, что при циклизации с getch для ввода он всегда пропускает первый символ. Например, вход «Helloworld» будет печататься как «мир». Кажется, я не вижу никаких проблем на данный момент, хотя, может быть, и потому, что я долго смотрел на код, или я что-то пропустил.Ncurses, non-blocking getch misses first character
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