にたまごほうれん草アーカイブ

はてなダイアリーで書いてた「にたまごほうれん草」という日記のアーカイブです。現在は「にたまごほうれん草ブログ」を運営中です。

EOFを入力する

いつの間にか失くしていたK&Rを再購入して読んでいたら、「getchar() != EOF」の結果を確認しろという課題があった。
元々のコードは以下の通りだが、普通にアルファベットや数字を入力しているだけではEOFとならず、ループしてしまう。
調べたところ、WindowsではCtrl+z、UnixではCtrl+dでEOFを入力できる模様。
思い返せば、RubyCGIを作成するときにオフラインモードでクエリの入力後にCtrl+dを押していたのはこういうことだったんですね。
参考:烏丸通的電算処 - C言語:EOFは自分で入力すること

コード(K&R P.20)

#include <stdio.h>
main() {
  int c;
  c = getchar();
  while(c != EOF) {
    putchar(c);
    c = getchar();
  }
}