반응형
scanf는 안전하지 않은 일이 발생할 수도 있는 함수들 중 하나다.
%d, %f와 같은 고정폭 변수만을 입력받아오는 경우엔 문제가 되지 않지만 %c, %s와 같은 문자 입력을 받을경우
"Buffer overflow"가 발생할 수 있는 배열 입력이다. 따라서 warning C4996 오류가 발생한다.
Microsoft에선 이를 지양하기 위해 scanf_s를 사용하라고 권고한다.
그렇지만 C++에선 scanf_s는 표준 문법이 아니므로 이 에러를 해결해야 한다. 아래와 같이 코드를 추가하면 된다.
#pragma warning(disable:4996) 또는 #define _CRT_SECURE_NO_WARNINGS를 전처리기 부분에 추가해주면 된다.
#define _CRT_SECURE_NO_WARNINGS
#pragma warning(disable:4996)
...
#include<cstdio>
...
scanf("%d", &num);
반응형
'개발(Dev) 이야기 > C++ , Python' 카테고리의 다른 글
[C++] cin 대신 scanf 에서 정수 1자리씩 입력받는 방법 (0) | 2020.03.26 |
---|---|
[C++] STL Queue 사용법 (0) | 2020.03.26 |
[C++] 동적으로 2차원 배열 할당하기 - vector편 (0) | 2020.03.25 |
[C++] Vector에서 Unique, erase를 활용한 중복순열 (0) | 2020.03.18 |
[C++] pair, vector (0) | 2020.03.08 |