c – setvbuf不能使stdin无缓冲
发布时间:2020-12-16 03:28:48 所属栏目:百科 来源:网络整理
导读:我的主要目的是使getchar一回到一个字符,而不是等待ENTER键.我试过了 int main(){ setvbuf(stdin,NULL,_IONBF,0); getchar(); return 0;} 将其与setvbuf的原型进行比较 setvbuf ( FILE * stream,char * buffer,int mode,size_t size ); 它应该将stdin设置为
我的主要目的是使getchar一回到一个字符,而不是等待ENTER键.我试过了
int main() { setvbuf(stdin,NULL,_IONBF,0); getchar(); return 0; } 将其与setvbuf的原型进行比较 setvbuf ( FILE * stream,char * buffer,int mode,size_t size ); 它应该将stdin设置为无缓冲模式. 但是还是getchar()一直在等待ENTER 我看过这样的相关帖子 Printing while reading characters in C 这是建议使stdin无缓冲的替代方法.但是我很好奇地知道为什么setvbuf方法不起作用 解决方法
终端驱动程序在返回之前不会返回任何东西,即使read()操作也可以接受已经存在的内容.
要从终端获取逐字符输入,您必须将其从规范模式转换为raw或cbreak模式,并且需要完全不同的操作.看看‘General Terminal Interface’上的POSIX手册如何控制终端.或者考虑使用curses库. 参见:Canonical vs non-canonical terminal input (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |