티스토리 뷰
Visual Studio 2017 오류 해결방법, scanf 함수
안녕하세요! 지난 시간에 Visual Studio 2017을 설치하여서 C언어를 위한 환경을 구축하였는데요. 앞으로 C언어를 공부하면서 알게 된 지식과 팁들을 소개할 예정입니다. 오늘 소개하려는 내용은 'scanf' 함수를 사용하다가 발생한 오류입니다. 'scanf' 함수는 'printf'와 대표적인 C언어의 입출력 함수로 사용자로부터 값을 입력받기 위해 사용하는 함수입니다.
저는 다음과 같이 int형의 변수 2개 'input1'과 'input2'을 선언하고 'scanf' 함수를 사용해서 사용자가 키보드로 입력한 값을 이 변수들에 저장하려는 코드를 작성해보았습니다. 하지만 코드를 실행시키기 위해서 빌드(Build)를 하니 'C4996'이라는 오류 메세지가 발생하였습니다. 오류의 내용과 오류가 발생한 줄을 확인해보니 'scanf' 함수 문제로 'scanf' 함수는 안전하지 않으니 대신해서 'scanf_s' 함수를 사용하라는 것이 었습니다.
물론 권장하는대로 'scanf' 함수 대신에 'scanf_s' 함수를 사용해도 괜찮지만 원래 사용하던 것이 익숙하기 때문에 'scanf'를 사용할 수 있는 방법을 소개하겠습니다. 제가 알고 있는 방법은 총 3가지로 코드에 추가해서 해결하는 방법 2가지와 프로젝트의 속성을 변경시켜서 앞으로 영구적으로 오류 메세지가 나오지 않도록 하는 것입니다.
1. 코드에 명령문을 추가해서 해결하는 방법
위에 있는 2개의 사진이 코드를 입력하여 해결한 경우로 첫 번째 사진은 "#define _CRT_SECURE_NO_WARNINGS"라는 코드를 추가하였는데 맨 처음 사진에서 오류 메세지를 확인하시면 이 코드를 사용할 시에 경고를 없앨 수 있다고 적혀있습니다.
두 번째 사진은 "#pragma warning(disable : 4996)"라는 코드를 추가한 것으로 '4996' 오류 코드를 발생시키지 않게 만드는 것입니다. 실제로 이 2가지의 코드를 빌드를 해도 아무 문제가 발생하지 않는 것을 확인할 수 있을 것입니다.
2. 프로젝트의 속성을 변경하여 해결하는 방법
두 번째 방법은 프로젝트의 속성을 변경하는 것으로 우선 솔루션 탐색기 영역으로 찾습니다. 솔루션 탐색기에 위치하셨다면 위의 사진처럼 설정한 프로젝트 이름에 마우스를 가져다 대시고 오른쪽 버튼을 눌러서 '속성' 메뉴를 클릭하여줍니다.
그러면 프로젝트의 속성 페이지 창이 나오는데 사진에 나오는 순서대로 진행합니다. '구성 속성'의 'C/C++'에서 '고급' 메뉴를 클릭하면 '특정 경고 사용 안 함'이라는 항목이 보일 것입니다. 바로 이 항목에 'scanf' 함수를 사용하지 못하게 하는 경고 코드인 '4996'을 입력을 하고 '적용'을 클릭하면 앞으로 scanf 함수를 사용해도 아무런 문제가 발생하지 않는 것을 볼 수 있을 것입니다.
개인적으로는 두 번째의 프로젝트의 속성 값을 변경하는 방법을 추천하고 보안을 중요시 생각하시면 'scanf_s' 함수를 사용하시기를 바랍니다. 이상으로 포스팅을 마치도록 하겠습니다.
'IT 공부 및 일상' 카테고리의 다른 글
안드로이드 스튜디오 레이아웃 미리보기 오류 해결방법 (0) | 2018.09.13 |
---|---|
C언어 문자열 함수편 - strtok 함수(문자열 분리) (0) | 2018.09.11 |
윈도우에서 아나콘다로 텐서플로우(Tensorflow) 설치하기 (0) | 2018.09.01 |
Visual Studio 2017 설치 및 C언어 개발환경 구축 (0) | 2018.08.29 |
1종보통 운전면허 합격후기 - 기능시험편 (0) | 2018.07.19 |
- Total
- Today
- Yesterday
- 인공지능
- RSS
- MAC
- 동미참
- 사이트맵
- 가상머신
- 함수
- 아나콘다
- 애드센스
- 웹마스터도구
- 안드로이드
- vmware
- 자바
- 애널리틱스
- C언어 콘서트
- 학생예비군
- 태움
- 애플
- 크롬
- 서치콘솔
- 구글 웹마스터도구
- 예비군
- 파이썬
- 윈도우10
- 네이버
- sitemap
- C언어
- 이클립스
- 구글
- HTML
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |