본문 바로가기
■ Programming /[ Tip ]

[Tip]비쥬얼 스튜디오(visual studio) scanf() 오류 잡아보기!

by Popbox 2017. 3. 19.
반응형

[Tip] 비쥬얼 스튜디오(visual studio) scanf() 사용불가 오류 잡아보기!

 

 

 

scanf() 실행 안되는 오류 잡기

 안녕하세요.

​Visual studio 툴로 C언어를 시작하는 분들 중에

scanf 오류로 고생하시는 분들을 위해 문제 해결법을 알려드리겠습니다.

 
 
[ 오류 ]

오류 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. 

 

 

scanf()를 사용하는 예제에서 그대로 사용하셨는대 이러한 오류가 나셔서 당황하신분들!!!!

자세히 알려드릴께요~

우선 오류가 나는 이유는

scanf()는 구조적으로 안정적이지 않아 여러 위험을 안고 있기 때문입니다.

 

scanf는 문자열 사이즈를 넣지 않아도 사용이 가능하기 때문에 "오버플로우(overflow)"라는

문제점이 발생할 수 있습니다.

이러한 문제 발생을 보안하고자 Visual Studio 2010버전 이상의 컴파일들은 scanf 대신 scanf_s를 사용하라고 권하는 오류입니다.

​하지만 처음 배우시는 분들한테 scanf만큼 편한게 없죠?

그래서 컴파일러가 오류를 발생시키지 못하게 scanf를 그대로 쓰는 방법을 알려 드리겠습니다.

 

 

 

 

 

[ 해결 방법 ] 1. 전처리기 매크로 정의 추가] -> #define _CRT_SECURE_NO_WARNINGS

1
2
3
4
5
6
7
8
9
10
11
12
#define  _CRT_SECURE_NO_WARNINGS
 
#include <stdio.h>
 
int main(void) {
    
    int a = 0;
    scanf("%d"&a);
    printf("%d", a);
 
   return 0;
}
cs

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

[ 해결 방법] 2. 지정 에러리스트 무시하기 추가] -> #pragma warning(disable:4996)

4996번 에러를 무시합니다

1
2
3
4
5
6
7
8
9
10
11
12
#pragma warning(disable:4996)
 
#include <stdio.h>
 
int main(void) {
    
    int a = 0;
    scanf("%d"&a);
    printf("%d", a);
 
    return 0;
}
cs

 

 

 

 

 

[ 해결 방법 ] 3. 환결설정 변경 SDL 검사 끄기

[1] 우측 솔루션 탐색기에서 자신의 프로로젝트 우클릭 -> 속성

 

 

 

[2] C/C++ 탭 -> SDL검사 끄기!

 

 

 

총 3가지 방법으로 scanf() 함수의 사용 오류를 잡을 수 있습니다.

가장 추천 드리는 방법은 프로젝트 생성하실 때 SDL 검사를 끄는 것 입니다.

 

 

감사합니다. 공감 한번 부탁드려요.
반응형

댓글