-
숫자만 입력받으려고 하다가 여기까지 온건데.. 숫자가 아닐경우 버퍼를 지우고서 다시 입력을 받도록 하려고 한다. 버퍼를 지우지 않고 냅다 검사만해버리면 아래와 같이 무한루프의 늪으로 빠지게 된다.
fflush()?는 꼼수(?) 라고한다. 그냥 비표준이라 리눅스에 안돌아가 window VS에서만 돌아간다나..그래서 그냥 안쓰는게 좋다고 한다.
그러면 어떻게 해야할까?
출처 https://m.blog.naver.com/CommentList.nhn?blogId=smilennv&logNo=220781410325
버퍼에 있는것을 int c변수에 받고 버퍼에 개행이있거나 EOF(끝)인지 확인하여서 버퍼를 계속해서 비우는것
아니면그냥 getchar만 써도 된다. 마지막 입력한 개행 하나만을 받아 버퍼를 비우니깐이라고 하는데 그냥 한단어 입력받는거라그런가?
아무튼 이렇게 해서 하면 문자열을 입력받았을때 계속 숫자입력해달라고 찡찡거릴수있다.
위에서 말한것처럼 버퍼에있는것을 다끍어서 지워야할때 getchat();요로코롬 하나 써버리면 아래와 같이 된다. 그러므로 while로 문자 다끍어서 읽어야댄다
while문으로 변경해서 다 긁어 읽는걸로 하면 위와같이 안된다.
근데 처음에 두번이나 입력을 받는다 while문에 scanf가 있어서 그런거 같군.. flag 변수를 하나 놓고 숫자가아닐때 계속 진행하게 해야겠다..'2018년 > C, Java, FileSystem' 카테고리의 다른 글
[JAVA] :: 인터페이스(Interface) (0) 2018.02.19 [JAVA] :: 상속(inheritance) (0) 2018.02.19 [File System] ::사분트리(QuadTree) (0) 2018.02.02 [File System] ::Grid File (0) 2018.01.30 [File System] ::트리 구현만 해보자 (0) 2018.01.23