初学者,一个关于scanf和缓冲区的有关问题

菜鸟求助,一个关于scanf和缓冲区的问题
#include <stdio.h>
int main()
{
int num;
    while ( scanf("%d", &num) != 1 )
    {
printf("enter a wrong number, enter the right number:");
    }
return 0;
}
不知道为什么我输入一个字母比如b,这段代码会无限循环,不是应该等我第二次输入再重新判断吗?
本人菜鸟,各位大牛见笑了.
------解决方案--------------------
你输入字母b后,那么缓冲区就有了这个字符b。scanf函数发现缓冲区有东西了,就去读取。但发现是一个字符b,而自己需要的是数字。那么scanf就返回了,但它只是返回,并不把这个b清除。所以字符b还是留在缓冲区。所以当再次回到循环判断语句时,scanf又会去读取这个字符b。又出错。一直循环下去。
你可以在printf语句下面加多一句fflush(stdin);把缓冲区的东西清除掉,就能正常工作了。