무한루프에 빠지는데...
글쓴이: ch0nn0m / 작성시간: 화, 2010/10/12 - 6:53오후
정수를 입력받아서 정수가 아니라면 if문을 실행하고 다시 처음으로 돌아가려고 재귀함수처럼 호출했더니 무한루프에 빠져버리네요...
제가 하고 싶었던 것은 정수가 아니면 다시 입력을 받으려고 했는건데요...
무한루프에 빠지는 이유와 해결방안이 궁금합니다
int select() { int a; while(1) { printf("입력: "); if (!scanf("%d",&a)) { printf("정수를 입력하세요.\n"); select(); } switch(a) { case 1: insert(); break; ... case 7: return 0; } } }
Forums:
<code>select();</code>
어느경우에
scanf("%d") 로 기다리는데 숫자가 아닌것을 입력하면,
이후에 다시 scanf("%d"); 를 해도 실패하게 되는 것 같습니다.
fgets() 등을 사용해서 한줄씩 입력받고 sscanf나 atoi()등으로 변환 하는게 나아보입니다.
추가로, 이경우에 재귀호출을 하는 것은 적절한 예로 보이지는 않습니다.
언제나 삽질 - http://tisphie.net/typo/
프로그래밍 언어 개발 - http://langdev.net
언제나 삽질 - http://tisphie.net/typo/
프로그래밍 언어 개발 - http://langdev.net
댓글 달기