|
fflush()는 말씀대로 다 날려버리지요.
scanf()의 입력은 입력후 프로그램에 영향을 주기 때문에,
(처리후 '\n'이 남아서 영향을 줍니다)
사용후 다 닦아버릴때 주로 사용합니다.
scanf()에도 리턴값이 있답니다.
이것을 참고해보시구요.
만약에 원하시는 대로,
원하는 입력값이 들어올때까지 계속 입력을 받으시려면
예를 들면,
do {
scanf("%d",&key);
fflush(stdin);
} while(key...);
이렇게 루프로 구성해보시든지요.
저라면, 복잡한 input에는 그렇게 하지 않구요.
새로 함수를 만들겁니다.
gets()있잖아요.
이걸로 일단 문자열에 입력을 다 받은후
원하는 양식으로 문자열을 가공합니다.
이런식으로 하는 것이 비효율적이라고 볼 수도 있지만,
원하는 대로 조작이 얼마든지 가능하거든요.
수고하세요.
inetinfos 님이 쓰신 글 :
: 답변주셔서 감사합니다.
: 그런데 프로그램을 다시 짜다보니 궁금증이 생겼는데요.
: 무조건 fflush()함수를 쓰기전에 scanf()오류가 생겼는지 검사하고 싶거든요
:
: 그리고 fflush()함수를 쓰면 프로그램에서 읽지 않았더라도 입력한게 다 날아가잖아요.
: 다른 함수는 없나요?
:
:
: 이영우 님이 쓰신 글 :
: : suksun 님이 쓰신 글 :
: : : scanf()함수를 이용해서 입력받으려고 하는데 사용자가 적절하지 않은 값을 입력하면 담번엔 입력 앙받잖아요.
: : : 근데 담번에도 입력받아 내고야 말거거덩여.
: : : 이럴 땐 어케 해야 하남요?
: : : clearerr(stdin); 명령을 써도 효과없네요.
|