私は現在、Ritchie & Kernighan による C プログラミング言語という本を読んでいます。そして、関数での EOF の使用法についてかなり混乱していgetchar()
ます。
まず、なぜ EOF の値が -1 で、なぜ の値getchar()!=EOF
が 0 なのか知りたいです。私は実際に試しましたが、できません。
次に、以下のコードを使用して文字数をカウントできる書籍の例を実行しようとしましたが、Enter キーを押してもループから抜け出せないようで、いつ EOF に到達するのでしょうか?
main(){
long nc;
nc = 0;
while (getchar() != EOF)
++nc;
printf("%ld\n", nc);
}
次に、Problem with EOF in Cで同じ問題を読みました。ほとんどの人は、EOF を使用する代わりに、ターミネータ \n または null ターミネータ '\0' を使用することをお勧めします。これは非常に理にかなっています。
本の例が別の目的を果たしているということですか?