C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了c – setvbuf不能使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

大佬总结

以上是大佬教程为你收集整理的c – setvbuf不能使stdin无缓冲全部内容,希望文章能够帮你解决c – setvbuf不能使stdin无缓冲所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: