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時間くらいかけてしまっている気がするがなんとかひとつ進むことができた
これで心置きなく次に進むことができる