반응형
scanf함수의 호출

scanf 함수에서의 %d 는 10진수 정수의 입력을 의미합니다

아래의 그림과 같이 한번의 scanf 함수호출을 통해서 둘 이상의 데이터를 입력 받을 수 있습니다.

 

 

 

scanf 에러 : 보안상 문제

해결방법 1(권장): SDL검사 : 아니요(/sdl)로 변경

1. 소스코드에서 우클릭을 한다

2. 속성을 눌러서 C/C++ 하위 일반을 눌러서 SDL 검사란에서 아니요(/sdl)로 변경해준다

 

 

 

해결방법 2: #define _CRT_SECURE_NO_WARNINGS 전처리 지시자를 사용

1. 소스코드 우클릭 속성에서 C/C++ 하위 전처리기에서 전처리기 정의란을 클릭하여 편집을 누른다.

2. 상단 탭에 _CRT_SECURE_NO_WARNINGS를 입력한다

3. 코드 상단에 전처리 지시자 #define _CRT_SECURE_NO_WARNINGS 를 입력한다.

 

 

 

해결방법 3: 코드 상단에 전처리 지시자 #pragma warning(disable:4996)을 입력한다

 

 

 

해결방법 4(권장): scanf 대신 scanf_s함수를 사용

scanf_s 함수는 인자값으로 메모리의 크키를 함께 입력받습니다.메모리의 크기 인자를 전달하지 않으면 사용자의 입력이 버퍼에서 허용하는 크기 범위를 초과해서 에러를 발생할 수 있습니다. 즉 scanf의 취약점을 보완한 상위호환형 함수입니다.

 

이미지 출처 : 윤성우의 열혈 C 프로그래밍

 

반응형

 

반응형

'C' 카테고리의 다른 글

정수와 실수의 표현 방식에 대하여!  (0) 2023.05.09
명령 프롬프트 / CMD(Command Prompt)  (0) 2023.05.08
연산자에 대해서!  (1) 2023.05.08
변수에 대해서!  (0) 2023.05.08
C언어 구조 파악!  (0) 2023.05.08

+ Recent posts