본문으로 바로가기

[C] Scanf 런타임오류 해결 방법

category 개발자과정준비/C 2020. 10. 10. 10:20
반응형

Scanf 에러떴을때 해결 방법

C 공부하면서 예제를 작성하다가 컴파일을 했을때, scanf에서 C4996 에러가 뜨는 것을 확인할 수 있다.

 

이러한 에러를 방지하고 실행할 수 있는 방법을 알아보자.

 

 

첫번째

최근 비쥬얼 스튜디오에서 scanf는 보안상의 허점을 방지하기위해 scanf_s를 사용하는 것을 권장하고 있다.

 

 

 

두번째

scanf_s 에 신경쓰고싶지않다면 맨 위에서 #pragma warning(disable: 4996)     을 선언해주면 된다.

4996 에러를 무시하고 컴파일 하겠다는 뜻으로, 에러의 원인인 C4996을 무시하고 컴파일하게 해준다.

 

 

세번째.

프로젝트의 속성에서 C/C++   ->   일반  -> SDL 검사를 '아니요'로 바꿔주고 적용을 클릭해준다.

프로젝트에서 우클릭 -> 속성 클릭
C/C++ -> 일반 -> SDL 검사를 '예' -> '아니오'  로 바꿔주고 적용을 클릭

 

 

SDL검사를 아니오로 했을때, 그대로 실행되는 것을 알 수 있다.

 

 

 

가장 추천하는 방법은 #pragma warning(disable: 4996) 를 사용하는 것이다. 

딱 한줄만 작성하면 해결되므로 가장 간단하고 직관적으로 문제를 해결할 수 있다.

 

scanf_s는 하나라도 _s를 붙이지못하면 에러가떠서 난처해질 수 있고, 3번째 방법인 SDL 설정을 바꾸는 것은 프로젝트 파일을 옮겼을때 이런 세팅을 다시 해줘야하기때문에 번거로워질 것이다. 그래서 3번째 방법은 추천하지 않는다.

반응형