Computer Science/C
scanf 연속 사용 시 예기치 않은 에러 방지!!
vincenzo.dev.82
2015. 3. 6. 01:02
반응형
학교 다닐 때 다른 블로그에 등록했던 글 복사 ㅎㅎ - http://blog.naver.com/7dbwnckd/50013168713
standard input으로 쓰이는 scanf .. 이해를 바로 합시다..
간단한 예를 하나 들어보죠...
바로 아래의 예를 실행시켜 보면... char를 입력하지 못하고 바로 넘어갑니다.
void exScanf()
{
int a;
char ch;
printf("enter a number : ");
scanf("%d", &a);
printf("enter a charac : ");
scanf("%c", &ch);
printf("a: %d , ch: %c \n", a, ch);
}
왜냐하면... 첫 번째 입력후 엔터키를 입력하게 되는데요~
그 엔터기가 그 다음 scanf의 문자로 입력되어지는 결과가 나오거든요~
그래서 오류를 수정하면... 2가지 방법으로 수정할 수 있답니다.
둘 중 하나를 택일 하시면 됩니다. ^^;;
void exScanf()
{
int a;
char ch;
printf("enter a number : ");
scanf("%d", &a);
// 첫 번째 방법...
fflush(stdin); // 버퍼를 비워라.
printf("enter a charac : ");
// 두 번째 방법
scanf("%*c", &ch); // * wild gey : 앞에 오는 \n 받지마라는 소리.
printf("a: %d , ch: %c \n", a, ch);
}
반응형