scanf로 문자를 입력받을때는 여러문자를 그대로 받을수 있지만 getchar할때는 여러문자 입력시 fflush로 버퍼를 비워주잖아요... 두함수의 차이가 어떤것이어서 그러는건지,,그리고 버퍼링에 대해 설명좀 해주세요
리턴되는 데이터부터 차이가 납니다.
키보드에서 들어온 데이터는 일단 임시장소에 순차적으로 저장되고 (이를 버퍼라고합니다)
scanf()나 getchar()시 이들 데이터가 빠져나갑니다. 만일 버퍼에 키 없으면 scanf()나 getchar()는 키 들어올때까지 가만히 대기합니다. 이때는 프로그램이 멈춘 것처럼 보이죠
버퍼에서 키 나갈때는 FIFO입니다. 먼저 들어온게 먼저 나갑니다.
scanf()와 getchar() 차이는 getchar()는 호출시 버퍼에 있는 문자 한개만 가져갑니다. 하지만, scanf()는 주어진 포맷대로 가져간 뒤 해독하죠.
Written By the Black Knight of Destruction
fflush로 flush하는 stream은 output stream만 가능합니다.
stdin과 같은 입력 스트림을 fflush로 비울 수 없습니다.
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html Korean Ver: http://cinsk.github.io/cfaqs/
텍스트 포맷에 대한 자세한 정보
<code>
<blockcode>
<apache>
<applescript>
<autoconf>
<awk>
<bash>
<c>
<cpp>
<css>
<diff>
<drupal5>
<drupal6>
<gdb>
<html>
<html5>
<java>
<javascript>
<ldif>
<lua>
<make>
<mysql>
<perl>
<perl6>
<php>
<pgsql>
<proftpd>
<python>
<reg>
<spec>
<ruby>
<foo>
[foo]
man페이지 보세요.
리턴되는 데이터부터 차이가 납니다.
키보드에서 들어온 데이터는 일단 임시장소에 순차적으로 저장되고
(이를 버퍼라고합니다)
scanf()나 getchar()시 이들 데이터가 빠져나갑니다. 만일 버퍼에 키 없으면
scanf()나 getchar()는 키 들어올때까지 가만히 대기합니다. 이때는 프로그램이 멈춘 것처럼 보이죠
버퍼에서 키 나갈때는 FIFO입니다. 먼저 들어온게 먼저 나갑니다.
scanf()와 getchar() 차이는 getchar()는 호출시 버퍼에 있는 문자 한개만 가져갑니다.
하지만, scanf()는 주어진 포맷대로 가져간 뒤 해독하죠.
Written By the Black Knight of Destruction
fflush로 flush하는 stream은 output stream만 가
fflush로 flush하는 stream은 output stream만 가능합니다.
stdin과 같은 입력 스트림을 fflush로 비울 수 없습니다.
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
Korean Ver: http://cinsk.github.io/cfaqs/
댓글 달기