C プログラミング言語の本から次のプログラムを実行しています。
#include <stdio.h>
main()
{
int c;
while((c=getchar()) != EOF)
putchar();
}
または
#include<stdio.h>
int main(){
int c = getchar();
while(c != EOF){
putchar(c);
c = getchar();
}
}
このプログラムを実行すると、説明のつかない動作が発生します。コマンドラインから次の順序で文字を入力すると{'h', 'e', 'l', 'l', 'o', '\n', '^D'}、次の応答が画面に出力されます:が入力されたhello後\n、プログラムは入力されると終了^Dします。
ただし、シーケンスを次のように変更すると{'h', 'e', 'l', 'l', 'o', '^D'}、次の応答が画面に出力されます:helloが、プログラムは終了しません。入ったらやめるべきではありません^Dか?^Dプログラムを終了するには、もう一度入力する必要があります。^Dまたは、次のように入力した後にのみプログラムが終了します\n。いつ入力してもプログラムが終了しない理由がわかりません^D。何かご意見は?
UNIX システムで実行しています。