-
카테고리
-
세부 분야
프로그래밍 언어
-
해결 여부
해결됨
버퍼가 헷갈려요
22.11.28 21:50 작성 조회수 145
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
강민철
2022.11.30
결론적으로는 맞습니다.
우선 scanf는 형식 지정자에 맞게 (올바르게) 입력된 입력값의 수를 반환합니다
즉 while(scanf("%d", &input) != 1)
는 입력된 값이 하나로 올바르게 입력되었는지를 검사합니다.
그렇지 않다면 while ((c = getchar()) != '\n')
조건을 검사하고
입력된 값 (c) is not an integer.\n Please try again :
을 출력하는 겁니다.
답변 1