2013-07-11 2 views
0

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); 
} 

ответ

2

Что вы ожидаете?

сбрасывает первый символ, если таковой имеется.

+0

Спасибо за свежую пару глаз и толчок в правильном направлении, теперь он зафиксирован. – Bennu