해결된 질문
작성
·
176
·
수정됨
2
예제를 실행시켜보면 10분 8초경처럼
엔터를 누르면 줄바꿈이 되는게 아니라 커서가 맨 처음으로 돌아가는데
이거 왜 이러는 건가요?
구글링 해보니까 윈도우에서는 엔터키 입력이 /r/n(캐리지 리턴 및 줄바꿈)이라고 하는데
그러면 /r/n이 실행되어서 줄바꿈이되고 커서가 줄바꿈된 줄의 맨 처음으로 돌아가야 하는데
왜 /r만 실행이 되는 건가요? 밑의 질문중에 교수님이 답변해주신거에 스택오버플로우 링크가 있던데
그건 제가 영어를 못해서 이해를 못하겠더라구요
답변 1
2
안녕하세요, 답변 도우미 Soobak 입니다.
_getch()
함수를 사용할 경우, Enter
키가 단순히 캐리지 리턴(CR
, \r
)으로 처리되기 때문입니다.getchar()
함수를 사용할 경우에는, Enter
키를 눌렀을 때 입력 버퍼에 있는 데이터가 처리되고, 개행 문자('\n'
)가 버퍼에 추가되어 줄바꿈이 발생합니다.
하지만, _getch()
함수의 경우 Enter
키가 단순히 '\r'
으로 처리됩니다.
예를 들어, "qwer"
을 입력하고 엔터를 누르면, _getch()
는 'q'
, 'w'
, 'e'
, 'r'
,그리고 '\r'
을 순차적으로 반환합니다.
이에 대해서 putchar()
함수가 해당 문자들을 그대로 화면에 출력하기 때문에, 커서가 'q'
의 위치로 이동하게 됩니다.