inflearn logo
강의

Khóa học

Chia sẻ kiến thức

Học lập trình C cùng Hong Jeong-mo

8.1 Bộ đệm đầu vào/đầu ra

9:50 _getch() 관련해서 질문있습니다.

Đã giải quyết

451

thd2tn

27 câu hỏi đã được viết

0

강의에서 보시면 _getche()의 e는 echo의 약자고

입력을 하면 buffer가 없기 때문에 바로바로 출력을 해주기 때문에 메아리처럼

따라온다고 해서 _getche()이라고 하셨는데

저렇게 echo가 되는 것은 밑에 putchar(c); 가 있기 때문이 아닌가요?

같은 이유에서 _getch()도 buffer 없이 글자를 입력받고

while문에 따라서 한글자 입력받을 떄 마다 putchar(c); 를 실행시켜줘야 하는 것이 아닌가요?

아니라면 그 이유가

_getche()는 출력을 해주므로 echo가 붙고 _getch는 출력함수를 무시하기 때문인 것인가요?

궁금합니다.

c

Câu trả lời 2

3

sohyun

"바로바로 출력을 해주기 때문에" 라고 하셨는데 여기서 말하는 출력은 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

thd2tn

_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