C Programming

visual studio scanf 오류 해결 방법 5가지 - 공부하는 도비

DOVISH WISDOM 2022. 9. 30. 15:35
728x90
반응형

visual studio를 사용하다 보면, 다른 컴파일러에서 잘 사용하던 scanf  함수에 오류가 있다고 하는 경우가 있습니다. 

오류

간단하게 저 오류에 대해서 설명하면, scanf 는 안전하지 않은 함수이니 다른 조치를 취하여라..! 요런 뜻입니다. 

해결 방법은 총 5가지가 있습니다. 

 

1. scanf_s 사용 

 

가장 간단한 방법으로 scanf에다가 _s 를 추가로 적어주면 됩니다. 

하지만, 비쥬얼에서 scanf_s로 작성한 코드르 다른 컴파일러에다가 쓰면 오류가 나니 추천하는 방법은 아닙니다. 

#include <stdio.h>

int main()
{
	int a; 

	scanf_s("%d", &a);

	return 0;
}

 

2. #define _CRT_SECURE_NO_WARNINGS 사용 

 

코드 작성 시 가장 윗부분에 #define _CRT_SECURE_NO_WARNINGS 을 적어주는 방법입니다. 

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main()
{
	int a; 

	scanf("%d", &a);

	return 0;
}

 

3. 전처리기 단계에서 문제 해결 

 

세 번째 방법은 두 번째에서 쓴 방법을 전처리기 단에서 해결하는 방법입니다.

(소스파일 -> 속성탭 -> C/C++ -> 전처리기 -> 편집 )까지 한 뒤, 기존에 있던 글 뒤에다가 ; 를 넣고 _CRT_SECURE_NO_WARNINGS; 를 추가로 넣어줍니다. 

위 그림처럼 글을 추가하고, 코드를 실행시켜보면 오류가 발생하지 않는 걸 확인할 수 있습니다. 

 

4.  오류 코드 무시  -  #pragma warning(disable:4996)

 

scanf 만 단독으로 썼을 때, 발생되는 오류 코드 번호가 4996인데, 이 번호에 해당하는 오류는 무시하겠다는 의미입니다. 

#pragma warning(disable:4996)
#include <stdio.h>

int main()
{
	int a; 

	scanf("%d", &a);

	return 0;
}

 

5. SDL(Security Development Lifecycle) 검사 끄기 

scanf는 보안 문제와 관련 있어서, 보안 검사를 꺼버리면 scanf에 대한 오류도 사라집니다. 

(소스파일 -> 속성 탭 -> C/C++ -> 일반 -> SDL 검사 -> 아니요)