C언어에서 입력스트림을 비우는 표준적인 방법이 없는것인가요? 창피하게도 콘솔 프로그램의 마지막에 "아무키나 누르면 종료됩니다" 라는 메세지를 출력하고 아무런 키나 입력하면 종료되도록 하는것을 만들고있는중인데
이전 입력처리에서 입력스트림에 남아있는 데이터를 그대로 읽어와버려서 사용자가 저 메세지가 출력된 이후의 키입력을 잡아내질 못하고 있습니다
어떻게 해야할까요?
비교대상으로 EOF 를 쓸지 개행을 쓸지는 상황에 맞춰 하면 되겠죠. 질문 글을 보면 표준입력인 것 같고, 개행까지 읽어야 할 듯 하네요.
while getchar ^ '\n'
과 같은 형태로 허공에 버리면 됩니다.
> C언어에서 입력스트림을 비우는 표준적인 방법이 없는것인가요?
네. 없습니다.
원하는 내용을 해결하는 방법은 모두 비표준적인 방법들입니다. curses를 활용하든, select(2)를 활용하든~ 말입니다.
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]
EOF 혹은 개행까지 읽어서 버리면 됩니다.
비교대상으로 EOF 를 쓸지 개행을 쓸지는 상황에 맞춰 하면 되겠죠. 질문 글을 보면 표준입력인 것 같고, 개행까지 읽어야 할 듯 하네요.
while getchar ^ '\n' 과 같은
while getchar ^ '\n'
과 같은 형태로 허공에 버리면 됩니다.
> C언어에서 입력스트림을 비우는 표준적인 방법이
> C언어에서 입력스트림을 비우는 표준적인 방법이 없는것인가요?
네. 없습니다.
원하는 내용을 해결하는 방법은 모두 비표준적인 방법들입니다. curses를 활용하든, select(2)를 활용하든~ 말입니다.
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
Korean Ver: http://cinsk.github.io/cfaqs/
댓글 달기