c语言清空scanf缓存,C语言清空输入缓冲区

来源:http://blog.csdn.net/guanyasu/article/details/53153705 https://zhidao.baidu.

来源:http://blog.csdn.net/guanyasu/article/details/53153705

https://zhidao.baidu.com/question/5241738.html

C语言中如何清空输入输出缓冲区

4d337068a4863146725bb3b1f1794425.png

上述描述似乎能够解决问题了,但是,fflush( )并不是标准C语言库函数,只是部分编译器自己实现的函数,是对标准C的扩展。

先来看一段代码:

#include

int main()

{

int num;

char ch ;

scanf("%d", &num);

scanf("%c", &ch);

printf("hello world\n");

system("pause");

return ;

}

设想输入一个数字和一个字母,应该出现如下情况

1

a

hello world

但事实是下面的样子

1

hello world

-----------------------------

原因是:在输入回车(‘\n’)时,相当于输入了一个字符,这样缓冲区内就残留了一个‘\n’。