duddnd904   5년 전

다른분이 게시판에 올려놓은 11719번 문제풀이 코드를 분석하고있습니다.

scanf함수는 엔터를 받으면 엔터+공백을 받는걸로 알고있습니다. 

코드를 보면 getchar()함수를 통해 버퍼에 있는 공백을 없애는 걸로 이해가됩니다.( 공백만 없애는 건가요?)

그런데 getchar()함수를 주석처리 해버리면 첫번째 입력 이후 무조건 else문으로 빠져 다른 행동없이 무한하게 개행을하게됩니다.

getchar()를 주석처리하면, 왜 무한루프를 도는 동안, 9번째 줄의 scanf는 무시되고 무한하게 else문으로 빠지게 되나요? 

항상 정성스럽게 답변 달아주시는 모든 분들께 많은 감사를 드립니다.

jaehoo1   5년 전

scanf함수는 입력을 받을 때 공백/탭/엔터를 기반으로 입력들을 구분하며,

엔터(\n)를 입력받을시 버퍼에 개행문자(\n)가 남습니다.

getchar()를 주석처리 하게 되면 입력받은 문자(\n포함)가 버퍼에 남아있어

이미 입력을 받았다 생각하고 그 이후를 진행하게 될 겁니다. 

저도 오랫만에 다시 생각하는 내용이라 확실하지 않습니다. 죄송합니다

댓글을 작성하려면 로그인해야 합니다.