gpt4 book ai didi

捕获输入而不\n

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

我正在终端中制作一个简单的 2d 游戏,我一直想知道如何在不返回的情况下获得标准输入。因此,用户不必按 w\n(\n 表示返回),他们只需按“w”即可继续。scanf、gets 和 getchar 无法做到这一点,但我以前曾在 Vi 等程序中看到过它可以做到。我将如何实现这一目标?

最佳答案

您需要将终端设置为非规范模式。您可以使用 tcsetattr 和 tcgetattr 等函数来设置和获取终端属性。这是一个简单的例子:

int main(int argc, const char *argv[])
{
struct termios old, new;
if (tcgetattr(fileno(stdin), &old) != 0) // get terminal attributes
return 1;

new = old;
new.c_lflag &= ~ICANON; // turn off canonical bit.
if (tcsetattr(fileno(stdin), TCSAFLUSH, &new) != 0) // set terminal attributes
return 1;

// at this point, you can read terminal without user needing to
// press return

tcsetattr(fileno(stdin), TCSAFLUSH, &old); // restore terminal when you are done.

return 0;
}

有关这些函数的更多信息,请参阅 glibc documentation.特别是this part.

关于捕获输入而不\n,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10152381/

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