gpt4 book ai didi

C: ncurses, initscr() 改变了 getchar() 的行为?

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

我只是在玩 ncurses 等等,我发现了一个非常奇怪的行为。

当我使用 ncurses 库中的 initscr(),然后使用普通的 getchar() 时,程序会在按下第一个键后终止。

我期望的正常 getchar() 行为是,只要我按下回车键,我就可以输入(或多或少)。

#include "curses.h"

int main()
{
initscr();
getchar();
//endwin();

return 0;
}

谁能解释一下为什么会这样?

最佳答案

curses 将终端输入初始化为raw 模式(这反过来使连接的流表现得好像是无缓冲),以便 curses 可以检测单字符输入. getchar 假定输入已缓冲,因此您可以按 Enter 结束输入行。在 raw 模式下,getchar 会立即返回,因为 read 调用会在您按下某个键后立即找到内容。

除了 endwin 之外,您还可以使用其他 curses 函数在终端的原始/熟化模式之间来回切换(参见 reset_shell_modereset_prog_mode 的手册)。

关于C: ncurses, initscr() 改变了 getchar() 的行为?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46749463/

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