Turbo-C
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
터보-C 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
Lua 게시판
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C/C++ Q/A
[5556] Re:간단한 질문인데요. 답변 좀 부탁드려요~
ㅣㅏ [] 1707 읽음    2006-01-18 01:54
키보드로 입력을 하면 키보드 버퍼라는 메모리에 일단 저장됩니다.
이 버퍼의 크기는 그리 크지 않습니다.
맞는지 잘 모르겠으나 가물가물한 기억으로는 256 바이트가 안 되는 것으로 압니다.
여튼, 그 버퍼에 일단 저장됩니다.
getch,gets 등 표준입력 함수들은 이 버퍼에서 읽어들입니다(가져옵니다).
가져올 때는 가져온만큼 키보드 버퍼에서는 사라지는 것이고요.
gets 함수가 키보드 버퍼에서 문자열을 가져오려고 보니 버퍼가 비어 있는 경우도 있을 수 있는데 그러면 사용자가 키보드로 입력할 때까지 기다리다가 입력이 있는대로 차례대로 가져옵니다.
gets 함수는 줄바꿈문자(엔터키에는 이 문자가 포함되어 있음)가 입력될 때까지 계속 입력을 요구합니다.
한편, 말씀하신 목적이라면 gets가 아니라 while(kbhit()) getch();로 해야 합니다.
gets 함수가 종료시키려면 줄바꿈문자를 입력해주어야 하는데 줄바꿈문자는 엔터키를 쳐주어야 입력됩니다.
그리고, 보통은 키보드가 stdin이므로 간단하게 fflush(stdin)로 할수도 있습니다.

김성찬 님이 쓰신 글 :
: 스트림 관련 부분을 공부하고 있는데요..
: 키보드에 남은 여분의 문자 처리 라는 예제 실습에서 좀 이해가 안되는 부분이 있어서요..
:
: void clear_kb(void)
: {
:              char junk[80];
:              gets(junk);
: }
: 이  사용자 정의 함수가 키보드에 남은 여분의 문자를 비워준다고 하는데..
: 처리 과정이 이해가 잘 안갑니다..    
: gets()함수면 문자열을 입력받는거 아닌가요? ㅡㅡ; 그럼 화면상에 문자열을 받는 행이 나와야 되는게 아닌지..
: 설명좀 부탁드립니다.

+ -

관련 글 리스트
5548 간단한 질문인데요. 답변 좀 부탁드려요~ 김성찬 1632 2006/01/14
5560     Re:간단한 질문인데요. 답변 좀 부탁드려요~ ㅏㅇ 1605 2006/01/18
5556     Re:간단한 질문인데요. 답변 좀 부탁드려요~ ㅣㅏ 1707 2006/01/18
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.