08/04/22 02:16:19
入力を閉じることを「EOFを入力する」と表現することがあると、
146が認めればすむだけのことに思える。
ちなみに、DOSやCP/Mには、テキストファイルの終わりに0x1Aの1バイトを置く風習があった。
URLリンク(support.microsoft.com)
DOSでのC処理系の実装では、テキストモードでファイルを読み取るとき、
0x1Aが現れたら(後ろにまだデータがあっても)ファイルの終わりとし、
getcでEOF(もちろん値は-1)を返したり、fgetsでNULLを返すという風にしていた。
(もちろんバイナリモードではやらない)
標準入力からも、Ctrl+Zで0x1Aを入力可能で、あとはファイルの場合と同じ。
そして、Windowsでは、ファイルに0x1Aを置く習慣も廃れ、
また、コンソール(標準入力)でのCtrl+Zは、0x1Aの入力ではなく、
OSがストリームの終わりに達したという扱いに変換するようになっているというのは
Win32コンソールを触ったことがあれば想像の通り。