wikipediaのscanfのページのバッファオーバーランを回避する為の方法についての項で
以下のように書いてあります。

>さらに前述の改行コードがストリームに残る問題を考慮すると
>char a[20];
>scanf("%19s%*[^\n]%*c", a);
>となるが、この場合はaに入る文字列が 19バイト以下の場合には、入力ストリームにやはり改行文字が残る。

そこで,

#include <stdio.h>
int main(void){
char a[5];
scanf("%4s%*[^\n]%*c", a);
getchar();
return 0;
}

というプログラムを実行して,scanfの入力時に例えば「12<ENTER>」と入力すると,
上の文章に従えば,aに入る文字列が4バイト以下だから,入力ストリーム上に<ENTER>が残って,
getcharによる入力待ちは無いはずです.
しかし,実際にはgetcharの所で入力待ちになります.

wikipediaの説明が間違っていると思っていいでしょうか.
wikipediaの脚注にあるサイトにも上で引用したことと同じようなことが書いてあります.
そのサイトはソフトウェア開発会社のものなので,そうそう間違ったことは書かれないだろうと思います.
だから,本当に説明が間違っているのか自信が持てません.実行結果は上記の通りなのですが.