• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    해결됨

66줄의 getchar();에 대한 자세한 설명부탁드려요 선생님 ㅠㅠ

19.11.10 01:33 작성 조회수 166

1

getchar();는 문자를 입력하는 함수로 알고 있는데

그게 어떤 원리로 scanf에 입력한 줄바꿈문자를 flush 처리할 수 있는건지 자세한 설명 부탁드립니다ㅜㅠ

또, 이 프로젝트에서 그 문구가 있을때와 없을때의 차이는 뭔가요?

답변 1

답변을 작성해보세요.

1

안녕하세요?

입력을 받게 되면 입력값들은 어딘가 줄을 서게 됩니다. scanf 에서는 입력값들을 받아서 처리를 하게 되고, getchar 또한 한자씩 입력 받아서 처리를 하게 됩니다. 예문에서는 "엔터"값을 따로 처리하기 위해 scanf 에서는 엔터 직전까지만 처리를 합니다. 그럼 엔터는 계속 줄을 서 있게 되는 것이지요. 이것을 getchar 에서 받아서 처리를 하는 겁니다. 실제로는 char c = getchar(); 와 같이 하여 c 라는 변수에 엔터를 저장하곤 하지만 예문에서는 그저 엔터를 무시하기 위함이니 따로 변수에 넣지는 않았어요, 그럼 쉽게 줄을 서 있던 엔터를 데려다가 어딘가 갖다놓은 뒤 줄을 비우는 것이지요. 코드에 이 부분이 없다면 엔터가 남아 있어서 사용자가 따로 입력 안했는데도 엔터가 입력되는, 가령 프로그램 종료 대기 구문에서 엔터를 치지 않아도 바로 종료가 될 수가 있답니다.

감사합니다.^^