해결된 질문
작성
·
176
0
int get_integer()
{
int input;
char c;
while (scanf("%d", &input) != 1)
{
while ((c = getchar()) != '\n')
putchar(c);
printf(" is not an integer.\n Please try again : ");
}
return input;
}
제가 맞게 이해한건지 모르겠는데
여기서 putchar(c)에 들어가는건 while (scanf("%d", &input) != 1)에서 scanf의 형식지정자가 맞지않아 뱉어낸 버퍼에 남아있던 값이 맞나요?
답변 1
1
결론적으로는 맞습니다.
우선 scanf는 형식 지정자에 맞게 (올바르게) 입력된 입력값의 수를 반환합니다
즉 while(scanf("%d", &input) != 1)
는 입력된 값이 하나로 올바르게 입력되었는지를 검사합니다.
그렇지 않다면 while ((c = getchar()) != '\n')
조건을 검사하고
입력된 값 (c) is not an integer.\n Please try again :
을 출력하는 겁니다.