gpt4 book ai didi

c - setvbuf 无法使标准输入无缓冲

转载 作者:太空狗 更新时间:2023-10-29 16:46:27 26 4
gpt4 key购买 nike

我的主要目的是让 getchar 在获得字符后立即返回,而不是等待 ENTER 键。我试过了

int main()
{
setvbuf(stdin,NULL,_IONBF,0);
getchar();

return 0;
}

setvbuf的原型(prototype)比较

setvbuf ( FILE * stream, char * buffer, int mode, size_t size );

它应该将 stdin 设置为无缓冲模式。

但是 getchar() 仍然在等待 ENTER

我看过这样的相关帖子

Printing while reading characters in C

建议使用替代方法使 stdin 无缓冲。但我很想知道为什么 setvbuf 方法不起作用

最佳答案

即使 read() 操作会接受已经存在的内容,终端驱动程序在您按下回车键之前不会返回任何内容。

要从终端获取逐个字符的输入,您必须将其从规范模式转换为原始或 cbreak 模式,这需要完全不同的操作。查看 'General Terminal Interface' 上的 POSIX 手册如何控制终端。或者考虑使用 curses 库。

另请参阅:Canonical vs non-canonical terminal input

关于c - setvbuf 无法使标准输入无缓冲,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10247591/

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