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

eugenie님의 프로필 이미지
eugenie

작성한 질문수

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

8.4 사용자 인터페이스는 친절하게

getchar() , 버퍼 질문

작성

·

369

0

while (1)

{

printf("Current count is %d. Continue? (y/n)\n", count);

int c = getchar();

if (c == 'n')

break;

else if (c == 'y')

{

while (getchar() != '\n')

continue;

count++;

}

이 코드에서 int c = getchar();에서 입력을 받고 버퍼에 저장된 후

while (getchar() != '\n') continue; 이 코드를 통해 버퍼에 있는 문자가 하나 씩 반환 되면서 버퍼가 비워지고 다시 int c = getchar(); 을 통해 입력을 받는다고 이해했습니다. 우선 이 과정이 맞게 이해한 건지 궁금합니다. 그리고 또 궁금한 것은 하나의 프로그램에서 버퍼는 오직 하나만 존재하는 것인가요?

답변 1

1

네, 그리고 프로그램에 버퍼가 오직 하나만 존재하냐는 질문에 대해서는,

하나의 입력 스트림마다 기본적으로 하나의 버퍼가 있지만

조금 더 명확하게는 다른 입력 스트림도 있습니다 (가령 file 스트림)

이런 경우에는 별도의 버퍼를 가지게 됩니다.

eugenie님의 프로필 이미지
eugenie

작성한 질문수

질문하기