visualstudio c언어 getchar()관련 질문

조회수 1239회

이미지

입력한 숫자를 구구단으로 출력하는 코드를 책을 보고 실행해봤는데 getchar()을 마지막에 하나만 쳤을때는 콘솔창에 정수를 입력하고 엔터를 치면 바로 창이 닫히길래 getchar()을 하나 더 추가했더니 정상적으로 실행됐어요. 책에 나온 코드에도 getchar()은 하나만 있던데 왜 콘솔창이 바로 닫히나요??

  • (•́ ✖ •̀)
    알 수 없는 사용자

1 답변

  • scanf() 함수로 정수, 예를 들어 7을 입력 받을 때 n 값에는 7이 들어가지만 실제로는 버퍼에 "7\n" 값이 들어오게 됩니다. 그래서 getchar() 함수에서 나머지 '\n'을 받는 것이지요.

    보통은 getchar()에서 입력을 기다려야 하지만 이미 개행 문자가 들어와 버렸으니 main 문이 끝나버리는 겁니다. 하나 더 추가 했을 때는 다시 입력을 받는 상태로 되기 때문에 main문이 유지 되는 것이고요.

    실제로 getchar() 함수의 리턴 값을 찍어보면 개행 문자가 들어가 있는 것을 확인하실 수 있을 겁니다.

    • (•́ ✖ •̀)
      알 수 없는 사용자
    • (•́ ✖ •̀)
      알 수 없는 사용자

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)