• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    해결됨

버퍼가 헷갈려요

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

답변을 작성해보세요.

1

강민철님의 프로필

강민철

2022.11.30

결론적으로는 맞습니다.

우선 scanf는 형식 지정자에 맞게 (올바르게) 입력된 입력값의 수를 반환합니다

while(scanf("%d", &input) != 1)는 입력된 값이 하나로 올바르게 입력되었는지를 검사합니다.

그렇지 않다면 while ((c = getchar()) != '\n') 조건을 검사하고

입력된 값 (c) is not an integer.\n Please try again :

을 출력하는 겁니다.