코스웨어/졸업생

간단 팁 소개 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