본문 바로가기
C

scanf, scanf_s 차이-코드119

by 박사과정 모닝 2022. 12. 13.
반응형

안녕하세요. 박사과정 모닝입니다.

 

2022년이 되어 오랜만에 다시 C언어를 공부하다 보니, 제가 처음 C언어를 처음 접했던 2013년과 달라진 점이 하나 있었습니다. 바로 scanf 함수를 사용하지 않는다는 점입니다. scanf 함수를 사용하지 않게 된 이유와, 대신 사용하는 scanf_s 함수의 장점을 정리해보고자 합니다.

 

1. scanf()

C 언어에서 scanf 함수는 데이터를 입력받을 때 사용합니다. C언어에서 제공하는 표준 입력 함수이기 때문에, #include <stdio.h> 입력을 통해 stdio.h 헤어 파일을 불러와야 사용할 수 있습니다.

 

2. scanf()의 문제점

scanf() 함수의 가장 큰 문제점은 보안에 취약하는 것 입니다. 입력받고자 하는 데이터가 지정한 데이터의 크기보다 큰 경우, 보안상에 취약점이 생기는 문제가 발생했습니다. 따라서 마이크로 소프트에서는 visual studio 2013 버전부터 보안성이 취약한 sacnf() 함수를 보완하기 위해 Security Development Lifecycle(SDL) 검사를 추가 옵션으로 지정하고 표준 입력 함수로 scanf() 대신 scanf_s() 함수를 사용하도록 권고하고 있습니다. 현재(2022년 기준) 최신 버전의 visual studio는 scanf_s() 함수만 사용하도록 설정되어 있습니다.

 

 

반응형