gpt4 book ai didi

c - 我为什么要在这里使用 getch() ?

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

我正在尝试使用 ncurses 并使用它,以便稍后为程序制作界面。在下面的代码中,为什么我必须使用 getch()?如果我不放 getch(),它就不起作用。我怎样才能避免使用 getch()?谢谢!

#include <ncurses.h>
#include <string.h>

int main()
{
int row;
int col;

initscr();
getmaxyx(stdscr, row, col);
mvprintw(row / 2, col / 2, "%s\n", "salut");
refresh();
getch();
endwin();
return (0);
}

最佳答案

如果你想在屏幕上看到 mvprintw 的结果,你必须刷新屏幕(完成),而且结果留在屏幕上足以见到他们。如果终端描述使用备用屏幕功能(例如 xterm 的),则该 endwin 调用将切换回正常屏幕,从 ncurses 输出中隐藏结果。

调用 getch 将程序停止足够长的时间以查看结果。

需要调用 endwin 来恢复终端模式。当 (n)curses 处于“屏幕模式”时,它已将终端(您的键盘)设置为“原始”模式,以允许它读取所有字符。如果您在退出程序之前没有调用 endwin,您将不得不重置您的终端,例如,

stty sane

controlJ结尾。

如果您不想在程序中清除屏幕,您的终端描述不能这样做(如常见问题解答中所述)。除此之外,可以使用 ncurses 函数 filter 来完成所描述的简单显示/退出场景(ncurses-examples 中有一个示例,但它不考虑备用屏幕)。

进一步阅读:

关于c - 我为什么要在这里使用 getch() ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35969292/

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