プログラミング(C)を趣味で独学で始めたばかりです。K&Rを使っています。
main()
{
int c;
while ((c = getchar()) != EOF)
putchar(c);
}
getchar() != EOF が 0 または 1 であることを確認します
何が起こっているのか理解していると思います:
- c には、キーボードからの次の文字が割り当てられます
- c は EOF かどうかをチェックします
- c には、EOF であるかどうかに応じて、1 または 0 が割り当てられます。
- 文字が出力に表示されるか、EOF がプログラムを終了する場合。
ただし、私の解決策は間違っているため、明らかに何かを理解していません:
main ()
{
int c;
while ((c = getchar()) != EOF)
printf("%d\n", c);
}
これは、文字の値を出力するだけです。また、キャリッジリターンキーを押すと「10」が出力されます。
私はそれがcを印刷すると思った。ただし、1 または 0 の値ではなく、文字の値を出力しています。
c を EOF と比較した後、1 または 0 が割り当てられていることがわかります。しかし、これを示すためにどのロジックを使用できるかわかりません。どうにかして文字値を表示することから抜け出し、代わりに比較値を表示する必要があるようです。while ループから抜け出す必要があるということですか? もしそうなら、私はその方法を知りません (これは単なる推測です)。
c = 1 または 0 であることを簡単に確認するにはどうすればよいですか?
また、どうすればこれを知ることができますか?ここから学ぶべき基本的なことがあるはずです。
main ()
{
int c;
while ((c = getchar()) != EOF != 0 != 1)
putchar(c);
}
私もこれを行いましたが、これはうまくいくようです。文字は出力されませんが、これが彼らが探している解決策であるかどうかはわかりません...