반응형
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 |