Pav*_*ath 10 c buffer stdin getchar unbuffered
我的主要目的是在getchar获得角色后立即返回,而不是等待ENTER密钥.我试过这个
int main()
{
setvbuf(stdin,NULL,_IONBF,0);
getchar();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
将其与原型进行比较 setvbuf
setvbuf ( FILE * stream, char * buffer, int mode, size_t size );
Run Code Online (Sandbox Code Playgroud)
它应该设置stdin为无缓冲模式.
但仍然getchar()在等待ENTER
我见过这样的相关帖子
这表明制作stdin无缓冲的替代方法.但我很想知道为什么setvbuf方法不起作用
Jon*_*ler 20
终止驱动程序在返回之前不会返回任何内容,即使read()操作会接受已存在的操作.
要从终端获取逐个字符的输入,您必须将其从规范模式转换为原始模式或cbreak模式,这需要完全不同的操作.有关如何控制终端,请查看"通用终端接口"上的POSIX手册.或者考虑使用该curses库.
另请参阅:Canonical与非规范终端输入