본문 바로가기
코스웨어/졸업생

간단 팁 소개 scanf 의 연속적 사용 시의 버퍼오류

by 알 수 없는 사용자 2015. 1. 29.
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

'코스웨어 > 졸업생' 카테고리의 다른 글

서울에 주쌤교도가 있다합니다  (12) 2015.03.17
[12년 정철] 우와......  (10) 2015.02.27
[12년 정철] 커널관심 있으신분?  (11) 2015.02.05
저도 선배 부심 한번  (17) 2015.02.03
[12년] 아니 이곳은!!!?  (12) 2015.01.30
[12년 정철]헬게이트 시작...  (3) 2015.01.27
졸업생 게시판 생성 자축!~!  (12) 2015.01.26
주쌤!!!!  (4) 2015.01.26