나는 C 프로그래밍 언어 책에서 다음 프로그램을 실행하고 있습니다 :이 프로그램을 실행하면getchar가() = EOF
#include <stdio.h>
main()
{
int c;
while((c=getchar()) != EOF)
putchar();
}
, 내가 설명 할 수없는 동작을 얻을. 다음과 같은 순서로 명령 줄에서 문자를 입력하면 : 다음에 이 입력 된 후 hello
이 입력되고 프로그램이 ^D
이 입력되면 다음 응답이 인쇄됩니다.
그러나 다음과 같이 시퀀스를 변경할 때 : {'h', 'e', 'l', 'l', 'o', '^D'}
다음 응답을 화면에 인쇄 할 : hello
, 있지만 프로그램이 종료되지 않습니다. ^D
을 입력하면 종료하지 않아야합니까? 프로그램을 종료하려면 두 번째로 ^D
을 입력해야합니다. 또는 \n
다음에 ^D
을 입력 한 후에 만 프로그램이 종료됩니다. ^D
을 입력 할 때 프로그램이 종료되지 않은 이유를 이해할 수 없습니다. 이견있는 사람?
저는 UNIX 시스템에서 실행됩니다.
이 값은 C 프로그램이 아니라 운영 체제 입력 스트림의 속성입니다. –
마리안과 매트 맥나브 감사합니다. 필자는 입력 버퍼가 개행 문자 만 입력하여 플러시됩니다. 나는^D와 비슷한 행동을하지 못했습니다. – Nishi