진짜 개발자
본문 바로가기

Language/C

C - 4.1 scanf와 scanf_s

728x90

잘 사용되던 scanf()가 2013버전 이후부터는 오류(경고) 가 발생하게 된다
이는 보안의 문제 때문이다 scanf에 버퍼의 크기를 지정하지 않을 경우 남는 버퍼 공간에 실행 코드를
함께 넣으면서 오버플로우 공격이 가능해지므로 이를 방지하기 위해 버퍼의 크기를 지정하는 
scanf_s() 의 사용을 하라는 메시지이다

*해결법 

1. scanf()를 계속 사용하고 싶은 경우 - 
      1.  프로젝트를 오른쪽 클릭하여 속성으로 들어가 전처리기 정의에 아래 문장을 넣는다
             => _CRT_SECURE_NO_WARNINGS;
     
      2. 소스코드 상단에 #pragma warning(disable:4996) 을 입력      

2. scanf_s()  를 사용하는 경우 - scanf_s( "제어문자열" , &변수 , 버퍼사이즈);
    => ex) scanf_s("%d" , &num , sizeof(int));

'Language > C' 카테고리의 다른 글

C - 6. 제어문 (Switch)  (0) 2018.09.05
C - 5. 조건문  (0) 2018.09.05
C - 4. 입력(scanf)  (0) 2018.09.05
C - 3. 출력(printf)  (0) 2018.08.15
C - 2. 상수  (0) 2018.08.15