코스웨어/졸업생
간단 팁 소개 scanf 의 연속적 사용 시의 버퍼오류
알 수 없는 사용자
2015. 1. 29. 13:30
728x90
반응형
scanf 를 사용하는 경우에, 버퍼가 비워지지 않아서, 이럴때 보편적으로 fflush(stdin); 하는 식으로 처리를 하거나
문자열 의 버퍼오버플로우의 문제가 생길까봐 fgets 나 아니면 버퍼를 겁나 키우던지 하는 방법을 썼는데
해결 방법으로 * 가 있습니다
특히나 문자열을 scanf 로 입력받을 때 유용합니다.
#include<stdio.h>
int main()
{
char str[10];
scanf("%9s %*s", str); //9개만 받고 나머진 버퍼를 비워버립니다
//scanf("%s", str); // 요 방법으로 str 크기를 벗어나면 보통은 런타임에러
printf("%s", str);
return 0;
}
int inum;
scanf("%*d", &inum);
요런 경우는 뻘 코드. 애초에 입력받자마자 죄다 비워버리기 때문에, 메모리공간의 쓰레기값들이 그냥 그대로 출력되는것을 확인할수 있습니다
728x90