인프런 커뮤니티 질문&답변

이재완님의 프로필 이미지
이재완

작성한 질문수

홍정모의 따라하며 배우는 C언어

7.2 표준 입출력 함수들 getchar(), putchar() 예제

7-2. getchar(), putchar() 함수

해결된 질문

작성

·

316

2

안녕하세요. 강의를 들으며 궁금한 점이 생겨 질문드립니다.

 

  1. 1번 예제를 보고, 저는 getchar() 함수가 '입력 받은 문자를 해당 아스키코드에 대응하는 정수로 해석해 변수에 그 값을 저장'한다고 이해했습니다. 그렇다면 그 값을 int로 해석한 뒤 char type 변수에 다시 저장하는 것인데, 이 지점이 잘 이해되지 않습니다. char 범위의 값을 int 형식으로 해석한 뒤 다시 변수에 저장하기 때문에 메모리에 있어 아무 문제가 없는 걸까요?? int로 해석하는 것이 'int 형식으로 값을 변환함'으로 이해하는 것이 맞을까요??

  2. buffer라는 임시 공간이 활성화 되는 시점은 getchar() 함수를 통해 문자열을 입력한 뒤, 반복문에 들어가는 때인가요? 아니면 getchar() 함수로 입력받는 그 순간 buffer가 활성화 되는 건가요?

늘 친절한 답변 감사합니다!

답변 1

3

안녕하세요, 답변 도우미 Soobak 입니다.

좋은 질문이시네요.

질문 1)
: EOF(End of File, 파일의 끝을 나타내는 값) 라는 개념 때문입니다.
EOF 는 사용자의 입력 혹은 파일의 끝을 나타내기 위해 사용되는 값이며, 일반적으로 -1 의 음수로 표현이 되는 값입니다.

말씀하신 것처럼, C 언어에서 문자는 내부적으로 0 ~ 127 의 범위를 가지고 있는 정수인 ASCII 코드로 표현됩니다.
하지만, char 자료형은 음수를 표현할 수 없으므로, EOF 라는 특수한 값을 처리하기 위해 int 자료형 반환값을 사용하는 것으로 이해하시는 것이 적절할 것 같습니다.
EOF 와 관련하여서는, 추후 강의 8.2 파일의 끝 에서 자세히 학습하시게 됩니다.

질문 2)
: 버퍼가 활성화되는 시점은 표준 입력이 활성화 되는 시점, 즉, 사용자가 입력을 시작하는 시점부터 입니다.
따라서, getchar() 함수가 호출되는 순간이 아니라, 사용자가 키보드를 통해 입력을 시작하면 버퍼가 활성화됩니다.

이재완님의 프로필 이미지
이재완

작성한 질문수

질문하기