수고많으십니다. 제목대로 입력 버퍼의 초기화에 대해서 궁금증이 있어 질문 올립니다.
#include <stdio.h>
int pow(int base, int exp);
int main()
{
int base, exp, q = 2;
while (q == 2)
{
printf("Base and Exp : ");
q = scanf("%d %d", &base, &exp);
if (q != 2)
{
printf("Worng enter\n\n");
rewind(stdin);
//while (getchar() != '\n');
q = 2;
continue;
}
printf("%d exp %d : %d\n\n", base, exp, pow(base, exp));
}
return 0;
}
int pow(int base, int exp)
{
int result = 1;
for (int i = 0; i < exp; ++i)
result *= base;
return result;
}
이번 강의의 예제를 나름대로 만들어 보았습니다. 저는 입력 버퍼로 인한 오류를 많이 격어서 입력 버퍼를 초기화하는 방법을 찾아보다 rewind(stdin);를 발견하여 사용했습니다. 그런대 강의 커뮤니티의 질문들을 살펴보니 대다수가 버퍼 초기화에 while (getchar() != '\n');를 사용하고 있었습니다. (참고로 전 아직 이 강의까지만 수강했습니다.)
요점은 rewind(stdin); 와 while (getchar() != '\n'); 의 기능적인 차이가 있는지, rewind(stdin);을 사용할때 위험성이 있는지 알고 싶습니다. 답변 부탁드립니다.