Visual Studio에서 scanf 오류를 해결하는 방법
프로그램을 실행 시 입력값을 scanf 함수로 받을 때, 비주얼 스튜디오는 scanf_s 함수 사용을 권장하며 오류 메세지를 띄울 수 있습니다.
scanf 함수는 버퍼 오버플로우라는 취약점이 존재하기 때문에 컴파일러가 반강제적으로 이 함수의 호출을 막는 것입니다.
참고로 버퍼 오버플로우(Buffer Overflow)는 입력값의 크기가 버퍼 사이즈보다 커서 입력값을 버퍼에 다 담지 못할 때 문제가 되는 취약점을 뜻합니다.
버퍼 오버플로우가 발생할 경우, 메모리 상에서 버퍼를 초과하는 부분이 덮어씌여지기 때문에 버퍼 이후의 메모리값이 바뀌게 됩니다.
어쨋든 메모리 관리를 잘 할 자신이 있다면 scanf 함수를 써서 입력을 받으면 되는데, 다음과 같은 오류 메세지가 뜹니다.
오류 C4996
'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
앞서 설명했듯이, scanf 함수가 취약하니 scanf_s 함수를 쓰는 것을 권장한다는 뜻입니다. 무시하시고, 문제를 해결하기 위한 방법을 알아봅니다.
1 프로젝트를 우클릭하고 [속성]을 선택합니다.
2. 속성 페이지의 왼쪽에서 [구성 속성] - [C/C++] - [전처리기]를 선택합니다.
3. [전처리기 정의]에 이미 입력된 부분은 지우지 마시고, 그 뒷부분에 ; _CRT_SECURE_NO_WARNINGS; 를 써줍니다. 세미콜론을 꼭 적어주세요.
4. 이제 scanf 함수를 사용할 수 있습니다.
'한국으로 > TIPS' 카테고리의 다른 글
Visual Studio에서 input.txt로 입력 리다이렉션하는 방법 (0) | 2018.07.06 |
---|---|
Visual Studio에서 컴파일 후 콘솔 창 유지하는 방법 (0) | 2018.07.06 |
티스토리 글쓰기 임시저장 오류를 해결하는 방법 (0) | 2018.07.01 |