私はこのK & Rの例についてサイトを見てきました。答えは「なぜこれが型intかEOFですか?ちょっと男。私はそれらを理解すると信じています。 私は理解していない結果です。私はこのコードが1文字をとり、それを印刷してから別の文字やEOFを待つことを期待していました。K&R本1.5.1ファイルコピー
私が見る結果は、私がreturnを押すまで待っている入力です。そして、入力したものすべてが表示され、入力を待っています。
カーネルリターンのテキストストリームを終了してから、putchar(c)がどこかに隠していたことを示すまで、whileループが 'ループ'していますか?
コードは次のとおりです。
#include <stdio.h>
/* copy input to output: 1st version */
main()
{
int c;
c = getchar();
while(c != EOF) {
putchar(c);
c = getchar();
}
}
さて、私はしばらく前の行に前のputchar(c)をこっそり場合、私は一種の私が期待したものを得ます。私はまだテキストストリームを入力し、returnキーを押す必要があります。結果はストリームの最初の文字であり、プログラムは終了します。
明らかに、私にとっては大きなギャップがあります。
はバッファリングされているデフォルトでは、標準入出力でお願い
K&Rコーディングスタイルは使用しないでください。推奨されていません。 Cは最後の17年を超えて進化しました。あなたのテキストについて:**あなたの**具体的な**質問が何であるか分かりません。これはチュートリアルのサイトではありません。 – Olaf
これは、標準入力と出力がバッファリングされているためです。入力した文字は、Enterキーを押すまで内部で保存され、一括して処理されます。同様に、出力文字は、改行文字を印刷するまで保存されます。このとき、すべてがフラッシュされます。入力と出力の間の直接の対応が必要な場合は、コンソールI/Oではなく特殊ライブラリを使用する必要があります。 –
「CR」(別名キャリッジリターン)はストリームを終了しません。 – Olaf