C语言fgets()函数、fgetc()函数不能阻塞的原因

C语言fgets()函数、fgetc()函数不能阻塞的原因

在写一个网络聊天室中遇到fgetc()\fgets()不能阻塞的问题

原因:在不能阻塞的地方(fgets())获得了上一个从缓冲区获得字符的函数没有取完的字符,大概率是’\n’;

解决办法:①方法一:在不能阻塞的地方之前调用flush()函数,刷新输入缓冲区(清零);

//C 库函数 int fflush(FILE *stream) 刷新流 stream 的输出缓冲区
fflush(stdin);//添加此语句即可

②方法二:产生不阻塞的原因是因为上一家没有取完缓冲区的内容,导致下一家取了上一家留下来的,所以,在上一家取完自己需要的之后,用getchar();函数把缓冲区的’\n’取走,即可解决问题;

你可能感兴趣的:(C语言基础,c语言,c++,开发语言)