visualstudio c언어 getchar()관련 질문
조회수 1239회
입력한 숫자를 구구단으로 출력하는 코드를 책을 보고 실행해봤는데 getchar()을 마지막에 하나만 쳤을때는 콘솔창에 정수를 입력하고 엔터를 치면 바로 창이 닫히길래 getchar()을 하나 더 추가했더니 정상적으로 실행됐어요. 책에 나온 코드에도 getchar()은 하나만 있던데 왜 콘솔창이 바로 닫히나요??
-
(•́ ✖ •̀)
알 수 없는 사용자
1 답변
-
scanf()
함수로 정수, 예를 들어7
을 입력 받을 때n
값에는7
이 들어가지만 실제로는 버퍼에"7\n"
값이 들어오게 됩니다. 그래서getchar()
함수에서 나머지'\n'
을 받는 것이지요.보통은
getchar()
에서 입력을 기다려야 하지만 이미 개행 문자가 들어와 버렸으니main
문이 끝나버리는 겁니다. 하나 더 추가 했을 때는 다시 입력을 받는 상태로 되기 때문에main
문이 유지 되는 것이고요.실제로
getchar()
함수의 리턴 값을 찍어보면 개행 문자가 들어가 있는 것을 확인하실 수 있을 겁니다.-
(•́ ✖ •̀)
알 수 없는 사용자 -
(•́ ✖ •̀)
알 수 없는 사용자 - 〉
- 그럼 저런 코드에서는 getchar()을 2번 사용해야 하나요?? 알 수 없는 사용자 2019.10.9 19:35
- 제약 사항이 없다면 그렇게 해도 되겠지만 버퍼에 있는 문자를 비우는 방법(?) 또는 버퍼에 개행 문자 제거 같은 방법을 찾아보면 좋을 것 같습니다. getchar() 함수가 개행 문자 제거 방법으로 사용 되기도 하네요... https://wodonggun.github.io/wodonggun.github.io/c/c++/c%EC%96%B8%EC%96%B4-%EB%B2%84%ED%8D%BC.html 참고 하시면 좋을 것 같습니다. 알 수 없는 사용자 2019.10.11 11:32
-
댓글 입력