c언어로 코딩하시는분이면 visual studio를 자주 사용하는데요.
보통 scanf("%d",&a); 형태로 적으면 정상적으로 돌아가야하지만 여기선 오류가 뜹니다.
왜냐하면 받아들일 수 있는 숫자를 초과하면 오버플로우가 발생할 수 있어서 자체적으로 막아둔겁니다..
밑에 C4996에러를 보시면 scanf_s를 사용하던가
_CRT_SECURE_NO_WARNINGS을 사용하라고 합니다.
#define _CRT_SECURE_NO_WARNINGS 을 복사해서 코드 최상단에 붙여놓으시면 에러가 안나긴 합니다
하지만 전 코드 새로 짤때마다 이걸 붙여놓는것도 일이라 생각해서 scanf_s로 짜줄겁니다.
물론 비표준함수라서 다른컴파일에 사용하면 오류가 나지만 _s만 지워주면 되긴 합니다.
이제 scanf_s에 대해서 알아볼까요?
scanf_s는 정수를 입력받을 때와 문자열을 입력받는 경우가 다릅니다.
일반적으로 처음 비주얼 스튜디오를 설치하고 scanf_s를 사용하면 초록색 줄이 생깁니다
밑에 예시와 같이 정수 인수가 없다고 합니다.
이럴 땐 뒤에 sizeof() 함수를 이용해 크기를 지정해주면 됩니다.
정답은 잘 나오지만 아직 초록색줄이 사라지지 않았습니다.
밑에 설명을 들어보면 64비트라서 오류가 있는 것 같은데요
이런 경우 해결법이 3가지 있습니다
1) 64비트를 32비트로 바꾸기
위에 x64를 x86으로 바꾸면 깔끔해집니다!
제가 사용하고있는 방법이기도 하고요.
2) 오류무시하는 명령어 쓰기
#pragma warning(disable:4996)
이 명령어를 #include밑에 두면 오류 없이 실행시켜줄 순 있지만
이것도 새로운 코드 작성할때도 입력해줘야 하고 불편해서 저는 잘 안 씁니다.
3) sizeof함수 앞에 int 붙이기
크기를 int로 지정해주는 겁니다
위에 두 가지 방법이 마음에 안 들면 이렇게 간단하게 수정을 해줄 수 있겠네요!