fgets()というか EOFがらみの質問ですが、

if( fgets(buf,MAXLEN,stdin) ) {
printf("==%s==\n",buf);
}

これを実行し、キーボードから abc<RET> と入力すると(<RET>は改行)
==abc
==
と出力されます。これは理解出来る。次に abc<CTRL-D><CTRL-D> と入力すると
==abc==
と出力されます。なぜ <CTRL-D>が2個必要なのか、という質問なのですが。
ちなみに、abc<CTRL-D>de<RET> と入力すると
==abcde
==
と出力されます。
文字列を何も入力せずいきなり <CTRL-D>をたたくとなにも出力されません
( if( fgets() ) が false になる)。この場合は <CTRL-D> 1個で済みます。
(Linux での話です。DOS だと <CTRL-Z> が2回必要なのでしょうか。確認していません)