繁体   English   中英

如何在不等待换行的情况下在 C 中接受用户输入?

[英]How can I take user input in C without waiting for a new line?

我曾尝试使用 getch() 无济于事。 我在 Rasbian linux 上使用 geany ide 和 gcc 编译器。 我已经安装了 ncurses 库并且正在使用它。

int input(){
int in;
in = getch();
printf("%i", in);
if(in == 'w'){
    return 1;
}
else if(in == 's'){
    return 0;
}
else{
    return 3;
}

}

要让getch()工作,您需要在程序开始时初始化 ncurses。 这是通过至少调用initscr()并禁用行缓冲来完成的,调用cbreak() cbreak 手册页

通常,tty 驱动程序会缓冲输入的字符,直到输入换行符或回车符。 cbreak 例程禁用行缓冲和擦除/终止字符处理(中断和流控制字符不受影响),使用户键入的字符立即可供程序使用。 nocbreak 例程将终端返回到正常(熟)模式。

最初终端可能处于也可能不处于 cbreak 模式,因为该模式是继承的; 因此,程序应该显式调用 cbreak 或 nocbreak 。 大多数使用curses 的交互式程序都设置了cbreak 模式。 请注意,cbreak 会覆盖 raw。

或者改为cbreak() ,另一种禁用行缓冲的方法是使用raw()设置“原始模式”。

有关在 ncurses 中读取键的完整示例,请参见例如
https://tldp.org/HOWTO/NCURSES-Programming-HOWTO/keys.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM