0

我在我的应用程序中使用 Linux 和 ncurses,并且我正在使用 getch 作为使用 nodelay 的非阻塞。问题是,在使用 getch 循环输入时,它总是会丢失第一个字符。例如,输入“Helloworld”将打印为“elloworld”。目前我似乎没有看到任何问题,尽管可能是因为我已经盯着代码很久了,或者我错过了一些东西。

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

1 回答 1

2

你能指望什么?

if((getch()) == ERR)
  {
    // no user input
  }

丢弃第一个字符,如果有的话。

于 2013-07-11T18:31:33.463 回答