C 언어

[C언어] scanf 함수 에러 해결하기 (Erorr : C4996)/ scnaf 함수 강제로 사용하기

Let it out 2024. 2. 10. 23:11
반응형

scanf 에러 발생(C4996)


오류 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. Project2 C:\Project2\Project2\FileName.c 8

 

 

에러 해결 방법

에러를 읽어보면 scanf 함수는 더 이상 안전성을 보장하지 않아서 scanf_s 함수를 사용하라고 한다.
 
따라서 scanf 함수 대신 scanf_s 함수를 사용하면 에러가 안뜨게 된다.
 
만약 scanf 함수를 강제로 사용 하고 싶다면 아래를 읽으면 된다.
 
 

 

scanf 함수 예시 코드

scanf 함수 때문에 에러 발생하는 예제 코드다.
 
이제 scanf를 강제로 사용하는 방법 2가지를 알아보자.
#include <stdio.h>

int main()
{
    char input[16];

    printf("문자 입력 : ");
    scanf("%s", input);

    printf("%s\n", input);

    return 0;
}
 
 
 
 

첫 번째 방법. SDL 검사 끄기

첫 번째 방법은 SDL 검사를 끄면 된다.
 
속성 -> C/C++ -> 일반 -> SDL 검사 아니요
 


 
 
 
이제 다시 코드를 실행 시켜보면 잘 실행 된다.


 
 


 

두 번째 방법. 전처리기 추가하기

두 번째 방법은 아래와 같이 main 함수 위에 전처리기 3줄을 선언해 주면 된다.
 
아래 코드 추가 해주고 실행 시켜보면 잘된다.
#ifdef _MSC_VER
#define _CRT_SECURE_NO_WARNINGS
#endif
 

 
 
 
 

 

마치며

처음에 말했던 것 처럼 scaf_s 함수 사용을 권장한다.
 

웬만하면 scanf, gets 함수 사용을 자제하자.

반응형