간단하게 n을 입력받아 n을 출력하는 코드입니다.
#include<stdio.h>
int main()
{
int n;
scanf("%d", &n);
printf("%d", n);
}
이런... 오류가 발생했네요....
[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.
최신 버전의 Visual Studio에서 scanf, strcpy, fopen 등등의 함수를 사용할때 위와 같은 C4996 에러 메세지가 뜨는 것을 쉽게 확인할 수 있습니다.C에서는 문자열, 파일에 관련된 버퍼나 스택 등 메모리에 문제가 생길 가능성이 있어서, 사이즈를 받는 _s 함수의 사용을 권장하기 때문에 이런 에러가 뜨는 것이라고 합니다.
저도 코딩 처음에 배울때 이것때문에 골치아팠었는데, 대부분 코딩 처음 시작할때 겪게되는 문제들 중 하나라고 생각합니다. scanf_s를 쓰면 해결되는 문제이긴 하지만, 매번 scanf_s로 쓰기 귀찮아서 scanf를 써도 오류가 발생하지 않는 법을 알려드리려고 합니다.
방법 1. 코드 맨 위에 #define _CRT_SECURE_NO_WARNINGS을 정의한다.
방법 2. 프로그램 상단에 프로젝트탭에서 프로젝트 속성 - 구성 속성 - C/C++ - 전처리기 - 전처리기 정의 편집으로_CRT_SECURE_NO_WARNINGS 를 추가해준다.
방법 3. 프로젝트를 생성할때 보통 빈 프로젝트로 해서 생성하시는 경우가 많으실텐데요. 빈프로젝트 대신 콘솔 응용 프로그램이나 데스크톱 마법사로 생성하여
추가옵션에 빈프로젝트 체크해주시고 SDL(Security Development Lifecycle)검사는 꼭 체크해제해주세요.
SDL옵션때문에 scanf 오류가 발생합니다.
빈프로젝트 대신 콘솔 응용프로그램!
'🚫ERROR' 카테고리의 다른 글
[C6385, C6386에러, Visual Studio] 배열 인덱스 참조 오류 (배열에서 잘못된 데이터를 읽고 있습니다, 쓰는 동안 버퍼 오버런이 발생하였습니다.) (0) | 2020.05.04 |
---|---|
[Visual Studio] 디버깅 후 콘솔창 유지하는 방법 (0) | 2020.04.25 |
[C2440에러, Visual Studio] "const char *" 형식의 값을 사용하여 "char *" 형식의 엔터티를 초기화할 수 없습니다. (1) | 2020.03.29 |
파이썬 오류 : SyntaxError: Non-ASCII character '\xeb' (0) | 2020.03.24 |
파이썬 오류 : TypeError: cannot unpack non-iterable int object (0) | 2020.02.17 |