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 システムで実行しています。