9:50 _getch() 관련해서 질문있습니다.
강의에서 보시면 _getche()의 e는 echo의 약자고
입력을 하면 buffer가 없기 때문에 바로바로 출력을 해주기 때문에 메아리처럼
따라온다고 해서 _getche()이라고 하셨는데
저렇게 echo가 되는 것은 밑에 putchar(c); 가 있기 때문이 아닌가요?
같은 이유에서 _getch()도 buffer 없이 글자를 입력받고
while문에 따라서 한글자 입력받을 떄 마다 putchar(c); 를 실행시켜줘야 하는 것이 아닌가요?
아니라면 그 이유가
_getche()는 출력을 해주므로 echo가 붙고 _getch는 출력함수를 무시하기 때문인 것인가요?
궁금합니다.
Câu trả lời 2
3
"바로바로 출력을 해주기 때문에" 라고 하셨는데 여기서 말하는 출력은 putchar 나 printf 가 해주는 그 출력의 의미보다는(얘네는 기존에 존재하는 어떤 변수 혹은 상수값, 즉 메모리 값을 출력하는거죠!) "입력 中인 문자들이 화면에 표시가 된다"의 의미로 생각하시면 될 것 같아요.
저희가 scanf 같은걸로 입력할 때 뭘 입력하는지가 화면에 보이잖아요! 즉 무엇을 입력 중인지가 화면에 보이잖아요? 그 의미이에요! 그런 의미에서 scanf 도 getche 처럼 입력 중인걸 화면에 출력해주는 입력 함수라고 보시면 됩니다. scanf 도 에코로 출력하는 함수인거에요.
getche 말고 getch 를 코드에 써보면 이해가 바로 되실거에요. getch 쓰면 사용자가 뭘 입력하고 있는지, 뭘 입력 중인지가 화면에 표시되지 않습니다.
getche 를 썼을 때 예를 들어 a 를 입력하면 화면엔 aa 가 표시됩니다. getche 로 입력받은 a 와 putchar 로 출력한 a 인거에요. a 를 입력하면 그 a 가 putchar 를 만나기 전에도 화면에 보이는거에요. scanf 같은 것도 이렇죠! 이걸 화면 출력이라고 언급하신거구요 putchar 출력과는 별개인 것입니다. putchar 는 변수 값을 '출력'하는거고 getche 나 scanf 는 사용자가 입력 중인 것을 '출력', 즉 화면에 즉시 보여줌! 이라고 해석할 수 있을 것 같네요.
반면에 getch 를 쓰고 a 를 입력하면 화면엔 a 하나만 표시될 뿐입니다. 이때 a 는 putchar 가 출력한 a인거에요. getch 는 사용자가 입력 중인걸 화면에 표시하지 않기 때문에..! 강의 코드에서 getche 를 getch 로 바꾸고 실습해 보시면 바로 이해 되실거에요.
"같은 이유에서~" 라고 말씀하신 아랫 부분은 제가 잘 이해가 되지 않지만 getche 의 출력을 putchar 출력으로 오해하셔서 주신 질문인 것 같네요..!! 제 위의 설명을 보시면 이해가 되실거라고 생각합니다! 그 출력을 한다고 강의에서 말씀하신게 그 putchar 출력 이게 아니라 입력 중인게 화면에 보이는지 아닌지! 그 의미에서 출력을 말씀하신것 같아요. 위에서 과정을 설명드린것과 같이 출력함수 putchar 를 무시한다거나 그런건 없습니다. putchar 는 언제나 실행 되었습니다. 입력 중!!!!인게 화면에 표시되냐 아니냐 그 차이인거에요.
0
_getch와 _getche의 차이점을 명확하게 이해했습니다. 그렇다면 getchar도 echo처럼 작동하지만 버퍼에 두고 \n를 입력받으면 출력을 해주기 때문에 _getche와의 차이점이 존재하겠네요. 정말 감사합니다.
Export template 안됨
1
30
2
완전히 똑같이 따라해도 exe파일이 안만들어져서 실행이 안됩니다.
1
57
3
main 함수에서 왜 int만 선언이 되는걸까요
1
57
2
8비트 2진수 변환시 왜 1을 더해야하나요?
1
55
2
혹시 강의를 빠르게 수강하려면 어디서부터 듣는게 좋을까요?
1
49
1
프로토타입과 함수간의 인자 불일치
1
73
2
12.12 헤더 관련 질문
1
60
2
Visual Studio Community 2026 사용 문의
1
138
2
Q. 15:30, 부호가 있는 8비트 정수 질문
1
61
2
getchar(), putchar()
1
94
3
강의자리ㅛ
1
80
2
비주얼스튜디오코드로 공부해도 상관없나요?
1
114
2
소스파일안에 여러 파일
1
76
2
F5와 F7의 차이
1
79
2
c = TWO * (a+b); 에서 a와 b는?
1
60
2
; 세미콜론을 붙이는 기준에 문의
1
70
1
Step over 기능 문의
1
53
2
2.6 강의 따옴표 출력 규칙 문의
1
76
2
int main 함수 관련 오류 문의
1
67
2
13.4 words[0]
0
61
2
11.7 함수를 구현해 봤습니다.
1
62
2
11.6 직접 strcmp와 strncmp를 구현해 보았습니다.
1
65
2
11.6 my_strcat과 my_strncat을 구현해봤습니다.
1
53
2
11.6 fit_str함수를 구현해 봤습니다.
1
54
2

