gpt4 book ai didi

c - 没有第二个 getch,ncurses 没有输出

转载 作者:太空宇宙 更新时间:2023-11-04 03:22:58 25 4
gpt4 key购买 nike

我遇到了与 Ncurses No Output 类似的问题.只是我在退出前有一个 getch 调用。当我不添加第二个 getch 调用时,我看不到任何输出在输出任何东西之前。以下是合集所有相关代码部分一起复制到一个例程中表现出与我的完整程序相同的问题。所以有些电话看起来是多余的,但我觉得那些是必要的在本地情况下。

#include <glib.h>
#include <stdlib.h>

#define bool ncbool
#include <ncurses.h>
#undef bool


gint32 main ( gint32 argc, gchar * argv [] )
{
initscr ();
keypad ( stdscr, FALSE );
nonl ();
cbreak ();
nodelay ( stdscr, FALSE );
noecho ();

/*
gint zch_extra;
zch_extra = getch ();
*/

WINDOW* w;
w = newwin ( 5, 10, 3, 3 );
box ( w, 0, 0 );
wnoutrefresh ( w );

mvwaddstr ( w, 1, 1, "huhu" );
wnoutrefresh ( w );
doupdate ();

mvwaddstr ( w, 2, 1, "<cont>" );
wrefresh ( w );

gint zch;
zch = getch ();

clear ();
refresh ();

nl ();
nocbreak ();
echo ();

endwin ();

return 1;
}

只有当我在代码中添加注释掉的额外 getch 时,我才会看到输出。

编译命令:

gcc -I /usr/include/ncurses -I /home/mkiever/include -I/usr/include/glib-2.0 -I/usr/lib/i386-linux-gnu/glib-2.0/include  -ansi -ggdb -c -o main.o main.c
gcc -o test main.o -lncurses `pkg-config --libs glib-2.0`

平台(uname -a):Linux Pirx 3.16.0-4-686-pae #1 SMP Debian 3.16.7-ckt11-1 (2015-05-24) i686 GNU/Linux

我做错了什么?我想,这是我对不同 refresh 调用的组合,但我不知道问题到底出在哪里。

感谢您的关注。

最佳答案

curses 启动时想要清除屏幕 stdscr(如 initscr 的手册页中所述):

initscr also causes the first call to refresh(3x) to clear the screen.

这样做需要刷新,在调用 initscr 之后的某个时间。 getch 刷新stdscr。在非工作情况下,程序会创建、修改和刷新另一个窗口,但当您调用 getch 时,curses 会刷新 stdscr(同样在 manual 中),覆盖该窗口。

它在内部执行这些步骤,在程序通过 getch 请求输入之前不需要显示结果。

关于c - 没有第二个 getch,ncurses 没有输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43705843/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com