결론
getchar()나 fgetc()의 반환값은 char가 아니라 int로 받아야 한다.
int ch;
while ((ch = getchar()) != EOF) {
putchar(ch);
}
왜 int인가?
입력 함수는 실제 문자 값과 EOF를 구분해야 한다. 그런데 char는 가능한 문자 값을 저장하는 타입이므로, EOF 같은 특별한 값을 안전하게 구분하기 어렵다.
시험 포인트
다음 코드는 위험하다.
char ch;
while ((ch = getchar()) != EOF) {
putchar(ch);
}
EOF 비교는 int로 받은 뒤에 해야 한다.