什么时候要驱除输入缓存区

什么时候要清除输入缓存区
用哪些函数输入时需要清除输入缓存区呀??
我都糊涂了
书上有个scanf()后用getchar();说是清除scanf输入后留在缓存区里的\n
可我用VC试了一下,
就算不加getchar();的话,在scanf();后加ch=getchar();再putchar(ch);
也没见屏幕多空一行额。。。。

------解决方案--------------------
fflush()是清除文件缓冲区,如:
#include <stdio.h>
#include <conio.h>
void main( void )
{
char string[81];
char ch[11];
  
printf( "Enter a sentence of four words with scanf: " );
scanf( "%s", string );
printf( "%s\n", string );
fflush(stdin); //如果没有这句,则stdio中还有数据,比如回车符
if(NULL!=fgets(ch,10,stdin))
printf("%x,%x\n",ch[0],ch[1]);

}

------解决方案--------------------
[code=C/C++]#include <iostream>
using namespace std;

int main(void)
{
char arr[10] = {0};

for(int i = 0; i < 10; i++)
{
scanf("%c", &arr[i]);
fflush(stdin);//这里需要清除缓存区、否则输一个字符回车一次就只能输入5个字符、剩余5个是'\n'
}
for(int i = 0; i < 10; i++)
{
printf("%c|", arr[i]);
}
system("pause");
return 0;
}code]
------解决方案--------------------
ch1 = getchar()再putchar(ch1)会多一行的,我用以下程序测试是这个结果
C/C++ code

#include <stdio.h>

int main()
{
    char ch, ch1;
    scanf("%c", &ch);
    ch1 = getchar();
    putchar(ch1);
    return 0;
}