이제 학원에서 c언어를 배운.지 5일차 되는데요,
학원 들어가기 앞서서 책과 동영상을 보면서 예습을 했더니
학원 수업에 별 어려움 없이 적응하며 잘 배우던 중 처음보는 부분이 나와서
이렇게 질문글을 남겨봅니다..
오늘 강의중에 fflush(stdin)이라는 걸 배웠는데,
제가 제대로 이해했는지 모르겠군요..
제 나름대로 정리한 부분
=================================================================================================================================
예를들어 이런 코딩이 있다고 하자.
#include
void main()
{
char num1,num2;
printf("첫번째 문자를 입력: ");
scanf("%c",&num1);
fflush(stdin); //단일주석(부연설명)
printf("두번째 문자를 입력: ");
scanf("%c",&num2);
printf("\n");
printf("첫번째 문자%c\n두번째 문자%c\n",num1,num2);
}
단일 문자를 입력하는 코딩을 치는데, 만약 여기서 fflush(stdin)이 없다면 어떻게 될까?
scanf함수는 자료를 입력받을 때, 입력버퍼에 사용자가 입력한 단일문자와 scanf를 빠져나오기 위한
엔터(\n)가 들어가게 된다. 그러면 num1이라 이름으로 할당된 메모리안에 단일문자가 들어가게 되고,
입력버퍼엔 엔터가 남게 되면서 다음 scanf 함수를 호출하게 되는데 이때 이미 입력버퍼엔 엔터키가 존재하므로
num2라는 이름으로 할당된 메모리안에 엔터가 들어가면서 scanf함수가 종료된다. 이러한 상황을 막기위한 함수가
fflush(stdin)이라는 함수로, 입력버퍼안의 값을 지워주는 역할을 한다.
==================================================================================================================================
구글링도 해봤는데 원하는 답이 안보여서 질문해봅니다
1. 꼭 단일문자 입력할때만 저 함수를 쓰는지
2. 숫자를 넣을땐 별 저 fflush함수가 필요없다 그러는데 왜 필요 없는지 알 수있을까요??