한 줄 정도를 띄어야 정상작동합니다

youwlghks Reply 9 years 35 weeks ago
#include <stdio.h> int main(void) { int ndigit[10]; int c, i; for (i = 0; i < 10; ++i) ndigit[i] = 0; while ((c = getchar()) != EOF) if (c >= '0' && c <= '9') ++ndigit[c - '0']; for (i = 0; i < 10; ++i) printf("%d: %d\n", i, ndigit[i]); return 0; } 입니다. 바로 EOF를 입력하면 모든 숫자가 0으로 뜨는데 엔터를 한두번 누른뒤에는 제대로 작동합니다. 왜이런가요??
booksky Reply 9 years 35 weeks ago
안녕하세요. 조교 이은헌입니다. GCC 컴파일러는 원래 유닉스 및 리눅스환경에서 동작되도록 만들어진 컴파일러이며 윈도우나 mac에서 사용할 수 있는 GCC는 리눅스와 커널 등의 차이점으로 약간 차이가 있을 수 있습니다. 윈도우의 경우 입력 후 엔터를 입력하지 않고 바로 EOF를 입력하면 입력이 아예 들어가지 않고 바로 프로그램을 종료할 경우가 생깁니다. 즉 엔터를 입력한 후에 EOF를 입력해야 제대로 작동하는 것이 당연한 현상입니다.