C语言fgets()函数、fgetc()函数不能阻塞的原因
在写一个网络聊天室中遇到fgetc()\fgets()不能阻塞的问题
原因:在不能阻塞的地方(fgets())获得了上一个从缓冲区获得字符的函数没有取完的字符,大概率是’\n’;
解决办法:①方法一:在不能阻塞的地方之前调用flush()函数,刷新输入缓冲区(清零);
//C 库函数 int fflush(FILE *stream) 刷新流 stream 的输出缓冲区
fflush(stdin);//添加此语句即可
②方法二:产生不阻塞的原因是因为上一家没有取完缓冲区的内容,导致下一家取了上一家留下来的,所以,在上一家取完自己需要的之后,用getchar();函数把缓冲区的’\n’取走,即可解决问题;
本文探讨了在网络聊天室中遇到的fgets()和fgetc()函数无法阻塞的问题,原因在于缓冲区残留字符。解决方法包括使用fflush()清空输入缓冲区和通过getchar()移除换行符。
1655

被折叠的 条评论
为什么被折叠?



