fflush(stdin); // 키버퍼를 비워주는 역할
ex)
----------------------------------------
char c;
int a;
printf("문자 하나를 입력하세요:");
scanf("%c",&c);
printf("숫자 하나를 입력하세요:");
scanf("%d",&a);
printf("입력한 숫자 %d, 문자 %c입니다.\n",a,c);
---------------------------------------
분명히 잘못된 결과값이 나올 것이다.
scanf는 하나씩 입력버퍼에서 가져오는데
문자하나를 입력할 때 '문자' 엔터 쳤을 경우
입력버퍼에는
문자 | \n |
이렇게 두개가 저장되어 있다. 처음에 문자를 가져가
그 변수값에 저장하고 그다음 입력받을 때 문제가 생기는 것이다.
이미 입력버퍼에 '\n'이 남아있으니까 \n를 입력 한걸로 알고 또다른 변수에
'\n'을 가져가서 입력하기도전에 그냥 엔터를 친거로된다.
그래서 입력버퍼를 비워줘야되므로 그 때 사용하는 것이 바로fflush(stdin);
scanf를 쓰고 바로 비우던 scanf쓸때마다 바로윗줄에 비워주기를 써주던 상관은 없다.
'프로그래밍 > c언어' 카테고리의 다른 글
사용자 이름,성,중간이름 받기 (0) | 2011.02.16 |
---|---|
typedef (0) | 2011.02.02 |
기초중기초(파일입출력) (0) | 2011.01.08 |
도서관리프로그램 (0) | 2011.01.08 |
BMI비만도측정 프로그램 (0) | 2011.01.07 |