>>686
どちらのプログラムもstdin「標準入力」からデータを読んでいる。
標準入力は通常、キーボードからの入力を受け入れる。

キーボードから標準入力に入力する場合、
データの終わりは Ctrl + D (Ctrlキーを押しながらDキー、Shiftは不要) を押す。
これが >>688 の教えてくれたことの意味。
ちなみに Ctrl + D で入力終了はLinux(Unix)の場合。
DOSやWindowsだと Ctrl + Z (画面には ^Z と表示される)の後に Enter、
だったと思うがちょっと自信がない。


ここまでを踏まえて2番目の質問。
このプログラムはファイル内容を読むようには作られていない。
標準入力から読んで画面に、より正確にはstdout「標準出力」に出力する。
ファイルから読ませたい場合は、標準入力の切り替え(リダイレクト機能)を使う。
具体的には下行のような感じ。
$ prog < file.txt
< file.txt で「標準入力をキーボードでなく file.txt に切り替えろ」という意味。


ファイル名を指定して内容を表示するプログラム、つまり
$ prog file.txt
のような使い方をするプログラムを作る場合は

1. 最初に(ファイル名を指定して)ファイルを開く
2. ついでファイルを読む
3. 最後にファイルを閉じる

という手順になる。
とりあえず、こんな説明で分かるだろうか。