C언어) VisualStudio에서 scanf() 오류 해결

반응형
C언어) VisualStudio에서 scanf() 오류 해결

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