Study & Practice

北海道札幌市のプログラマによる技術とか雑記のブログ

K&R 演習1-6 getchar() != EOF の値

少し前にK&Rを買ってC言語の勉強を進めているが演習問題で結構つまづいて進まない

なかでも演習1-6, getchar() != EOFの値が0か1であることを確認せよ

という問題がなかなかわからない

何パターンか試してみたけど1しか出力されない。

英語のstack overflowで同じ問題に対する質問があって
ソースを写経してみても1しか表示されない

^D(Windowsだと^Z)で0になるっていう解答もあったけど何も表示されないでプログラムが終了してしまう。

とりあえず飛ばして進もうと思うがいつかわかる日がくるのだろうか


とか思ってたら記事書いてる間に解決できた

解決したコードはこれ

  int c;
    while ((c = getchar()) != EOF) {
        printf("%d ", c != EOF);
        putchar(c);
    }
    printf("\n%d\n", c != EOF);

これは

http://www.learntosolveit.com/cprogramming/Ex_1.6_verifyeof.html

のコードを丸々写経したものでjavaのコードっぽいのだけどCでも問題なく動いた

最初にこのコードを試していた時は^DがEOFの入力コマンドということに辿り着いていなかったので0を出力できていなかったようだ

他に試していたコードもあるがそもそも^DでEOFを入力していないのだから1しか出力されないのは当たり前

先日から3時間くらいかけてしまっている気がするがなんとかひとつ進むことができた

これで心置きなく次に進むことができる