본문 바로가기
프로그래밍/C

[c언어] scanf() 오류 C4996 'scanf': This function or variable may be unsafe.

by 아임코딩 2024. 1. 26.
728x90
반응형

소개

안녕하세요 아임코딩입니다.

이번에는 비주얼 스튜디오에서 scanf()를 사용할 때 발생할 수 있는 오류 중 하나인 C4996에 대해서 알아보도록 하겠습니다.

 

코드 및 오류 화면

 

 

코드를 scanf() 만 작성하고 비주얼 스튜디오에서 실행을 하면 이런 오류 화면이 나옵니다.

 

오류 C4996 'scanf': This function or variable may be unsafe. 

 

Consider using scanf_s instead. 

To disable deprecation, use _CRT_SECURE_NO_WARNINGS. 

 

오류 명을 자세히 살펴보면 this function or variable may be unsafe 라는 문장이 나옵니다.

scanf() 함수가 안전하지 않다고 비주얼 스튜디오에서 판정을 하기 때문에 오류가 나는 것입니다.

 

이를 해결하기 위해서는 몇가지 방법이 존재합니다.

 

scanf_s() 함수 사용하기

scanf()를 단순하게 scanf_s() 로 바꿔주면 됩니다.

하지만 scanf()가 C언어의 표준 함수이기 때문에 이 방법은 추천드리지는 않습니다.

코드 실행 화면

 

코드를 scanf() 대신 scanf_s() 로 변경하니 잘 실행이 되는 것을 확인할 수 있습니다.

 

 

SDL 검사 변경

이 방법은 비주얼 스튜디오에서 scanf() 함수의 안전성 검사를 안하도록 설정하는 방법입니다.

 

상단 디버그 메뉴 -> 속성 페이지 -> C/C++ -> SDL 검사 NO 로 설정하면 됩니다.

 

 

#define _CRT_SECURE_NO_WARNINGS

이 방법은 비주얼 스튜디오에서 scanf() 안전성 오류가 날 때 추천해주는 방법입니다.위의 #define 으로 시작하는 코드를 코드 맨 위에 적어주는 것입니다.이 코드는 안전성 오류를 나지 않게하는 코드입니다.

코드 실행 화면

 

위에 #define _CRT_SECURE_NO_WARNINGS 를 추가해주니 오류가 나지 않는 것을 확인할 수 있습니다.

 

 

#pragma warning(disable:4996)

이 방법도 위의 방법과 비슷합니다.

4996번 오류를 나지 않게 하는 코드입니다.

4996번 코드는 scanf() 안전성 오류에 대한 코드입니다.

 

위의 코드를 추가했더니 프로그램이 잘 작동하는 것을 확인할 수 있습니다.

728x90
반응형