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

민우님의 프로필 이미지
민우

작성한 질문수

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

8.5 숫자와 문자를 섞어서 입력받기

while(getchar() != '\n') continue;의 원리

작성

·

238

1

while(getchar() != '\n') continue;가 입력 버퍼에 남아있는 개행문자들을 모두 읽어들이며 입력 버퍼를 클리어해주는 것이라고 알고 있는데 왜 그런지 원리를잘 모르겠어요

getchar()에 들어가는 값이 줄바꿈 값이 아니면 다시 반복문으로 돌아가고, 줄바꿈이면 계속 한다는 뜻인 저while(getchar() != '\n') continue; 라는 코드가 어떻게 그런 기능을 하는 건가요?

답변 1

1

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

 

입력 버퍼는 프로그램이 요청할 때까지 데이터를 보관하는 임시 저장소라고 생각하시면 이해에 도움이 되실 것 같습니다.
getchar() 함수는 이 버퍼에서 '하나의 문자' 를 읽어들이며, 버퍼 내부에서 데이터를 가리키는 위치를 하나의 문자 뒤로 이동시킵니다.
즉, while (getchar() != '\n') 반복문은 getchar() 함수가 개행 문자를 읽어들일 때 까지 continue; 를 통해 반복하며, 다음 입력에서 읽어야 할 문자 이전까지 인덱스를 이동시켜주는 원리입니다.

민우님의 프로필 이미지
민우

작성한 질문수

질문하기