fgets()함수의 블록된 문제열 제거 방법이 궁금 합니다.
글쓴이: 바깥줄 / 작성시간: 금, 2004/08/13 - 1:47오전
질문은 다름이 아니고
fgets에서 지정한 사이즈보다 큰 문자열을 입력 받았을때
코드가
fgets(buf, 10, stdin);
입력 받은 문자열길이가 15이면 처음 10문자는 처리가 되고 이후 5문자는 블록(?)이 되어 있다가 다음 fgets()를 만났을때 사용자의 입력 없이도 블록된 5문자가 입력으로 처리가 됩니다.
gets가 아닌 fgets()쓰는 이유기 길이 지정 때문인데 이것을 해결 하지 못하여 고심 하고 있습니다.
다른 게시판에 질문해 보니(물론 검색 해서 없는 질문 인 것을 학인 하고) setbuf()를 사용하라고 되어 있더군요
그래서 또 setbuf()를 사용하니 printf()랑 서로 잘 맞지 않아 출력이 제대로 이루어 지지 않았습니다.
무슨 방법이 없을까요?
Forums:
fflush
fflush(stdin)
Re: fflush
NO!
http://www.eskimo.com/~scs/C-faq/q12.26.html
$ man fpurge <어떠한 역경에도 굴하지 않는 '하양
$ man fpurge
<어떠한 역경에도 굴하지 않는 '하양 지훈'>
#include <com.h> <C2H5OH.h> <woman.h>
do { if (com) hacking(); if (money) drinking(); if (women) loving(); } while (1);
fflush
다음은 fflush 의 man page의 일부 입니다.
위의 otherwise부분이 input stream 을 의미한다고 생각합니다.
분명 discarded된다고 나와 있습니다.
흠..근데 singlet님께서 제시한 c-faq에서는 안된다고 나와있으니
어떤게 사실에 가까운지 모르겠네요.
이것에 대해 좀더 다른 정보를 가지고 계시는 분 있나여?
kldp에서도 이미 논의된 바 있습니다.[url]http://bb
kldp에서도 이미 논의된 바 있습니다.
http://bbs.kldp.org/viewtopic.php?t=25929&highlight=
댓글 달기