
visual studio에서 scanf()를 실행하면 다음과 같은 오류가 발생한다.

오류 내용을 설명하자면, scanf를 사용하지 말고 scanf_s를 사용하라고 한다.
이는 visual studio가 scanf_s를 통해 미리 입력받는 값의 크기를 정해주어 사용자의 잘못된 입력으로 인한 프로그램의 비정상적인 종료를 막기 위함이다.
하지만 scanf_s 는 visual stuio에서만 사용하는 비표준 함수여서 다른 편집기에서 컴파일하면 오류가 발생하므로 표준 함수인 scanf를 사용하는 것이 좋다.
따라서 대표적으로 다음 두 가지 방법으로 이 문제를 해결할 수 있다.
1. #define _CRT_SECURE_NO_WARNINGS
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main(void)
{
int number;
printf("정수를 입력 : ");
scanf("%d", &number);
printf("입력받은 정수 : %d", number);
return 0;
}
코드의 첫 시작 부분에 #define _CRT_SECURE_NO_WARNINGS 구문을 적어주면, 경고는 유지되지만 오류가 사라져 프로그램이 정상적으로 작동한다.
#define _CRT_SECURE_NO_WARNINGS 대신 #pragma warning (disable: 4996) 을 작성해줘도 된다.
2. SDL 검사 비활성화
굳이 코드에 #define _CRT_SECURE_NO_WARNINGS를 추가하고 싶지 않다면, SDL 검사를 비활성화 하여 문제를 해결할 수도 있다.

visual studio 실행창에서 오른쪽의 솔루션 탐색기에서 소스 파일 폴더 안의 c파일을 우클릭해서 속성을 클릭해보자.

C/C++을 클릭해주고

SDL 검사에서 “예(/sdl)” 클릭하면 이를 수정할 수 있다.

“예(/sdl)”을 “아니요(/sdl-)” 로 수정하고 확인을 클릭해준다.
두 방법 중 본인이 편한 방법을 사용하면 된다.
'C language' 카테고리의 다른 글
C언어) [조건문] switch문 (0) | 2023.06.06 |
---|---|
C언어) [조건문] if문 (0) | 2023.06.06 |
C언어) 입력 (0) | 2022.02.12 |
C언어) 변수명 규칙 (0) | 2022.02.12 |
C언어) 자료형-2 (0) | 2022.02.12 |