일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Programming
- 연산자
- Windows
- c#
- tipssoft
- 리뷰
- Tips프로그래밍강좌
- 배열
- VS ERROR
- 티스토리
- Kotlin
- Visual Studio
- 포인터
- 백준
- 문법
- Direct2D
- Tips강좌
- c
- doit코틀린프로그래밍
- 김성엽
- 지식나눔강좌
- 프로그래밍
- Javascript
- CS
- c++
- 알고리즘
- Desktop
- 이지스퍼블리싱
- 함수
- Win32
- Yesterday
- Today
- Total
목록scanf (5)
F.R.I.D.A.Y.

VS ERROR C4996 : SDL 오류 오늘은 scanf() 함수와 같이 입출력 함수, 문자열 함수를 다룰 때 종종 발생하는 C4996에 대해 다뤄봅니다. 원인 원래는 문제없이 컴파일되는 것이 맞지만, scanf() 등의 함수에서 발생 가능한 잠재적 문제점으로.. pang2h.tistory.com 위 C4996 경고가 발생했던 이유에 대해 알아보는 시간을 가져봅니다. 함수의 구조 함수의 구조부터 확인합니다. 일단, 간단히 strlen() 함수를 가지고 예시를 들어보도록 합니다. 아래는 예시를 위해 직접 작성한 strlen()과 동일 기능을 하는 함수입니다. int strlen(char* str){ int count = 0; while(1){ if (*str != 0) count++; else brea..

매번 scanf_s를 사용하면서도 제대로 된 사용법을 몰라서 질문을 하는 분들이 많습니다. 그래서 이번 포스트에서는 scanf_s의 사용 방법에 대해 설명합니다. scanf_s C언어에서 입력을 받는 표준 입력입니다. 과거에도 C언어 표준으로 존재하기는 했으나 선택 구현이라 scanf_s를 구현한 컴파일러는 MSVC밖에 없었다고 하더군요. 그래서 많은 사람들이 scanf_s는 MSVC에서만 제공하는 "C언어 비표준이다!"라고 단정 짓는 경우가 있었습니다. 저도 최근까지는 scanf_s가 비표준인 줄 알고 있었어요... scanf_s의 함수 원형은 다음과 같습니다. int scanf_s(const char *format [, argument]...); 이때 [, argument]... 는 추가로 입력을 받..

※ VS2019 기준으로 작성되었습니다. #include int main(void) { int v; scanf("%d", &v); return 0; } 위와 같이 작성하면 다음과 같은 경고가 발생합니다. 경고 수준에 따라 오류로 발생할 수 있습니다. 여기서 C4996 오류는 다음 항목을 참고하세요. 이번 포스트에서는 C6031 오류를 다루겠습니다. 원인 함수 scanf의 반환값을 어딘가에 대입하거나 사용하지 않아서 발생하는 경고입니다. 코드상 문제도 없으며, 단순히 버려지는 값이 있음을 알리기 위해 인텔리센스가 안내하는 내용입니다. 만일 원하는 작업대로 정상 동작 한다면 무시하셔도 됩니다. 경고 가리기 경고를 가리고싶다면 아래 안내를 따라하세요. Plan1. 프로젝트 속성 수정 상단 [프로젝트 - 속성]..
대학 교수님들이 학생들에게 C를 가르칠 때 종종 double을 출력할 때 %lf가 아니라 %f를 사용하는 교수님들이 계신다. 대학 들어와서 교수님들이 왜 double을 계속 %f로 출력할까 생각을 해봤는데 마땅한 이유가 생각이 나지 않았다. 그래서 '표준 안지키는건 교수님들도 똑같구나'하고 있었는데 근래 들어 그 이유를 찾았다. 이 문제는 C언어 표준과 관련이 있는데 사실, %lf는 C99에서 나온 신기술(?)이다. 기존까지는 double을 출력할 때고 %f를 사용했다고 한다. 기존의 C90의 경우 scanf에 double 자료형을 사용하려면 %lf를, printf로 double 자료형을 출력할 때는 %f를 사용해왔다고 한다. 그러나 개발자들이 scanf에서는 %lf를 사용하고 printf에선 %f를 사..
오늘은 scanf() 함수와 같이 입출력 함수, 문자열 함수를 다룰 때 종종 발생하는 C4996에 대해 다뤄봅니다. 원인 원래는 문제없이 컴파일되는 것이 맞지만, scanf() 등의 함수에서 발생 가능한 잠재적 문제점으로 인해 MSVC에 이 함수들을 사용하지 못하도록 강제하는 설정(SDL, Security Development Lifecycle)이 활성화되어 사용하지 못하는 것입니다. 해결 아래 두가지 방법으로 해결할 수 있습니다. Plan1. 코드 상단에 전처리 코드 작성 아래 두 줄의 코드 중, 하나만 작성하면 됩니다. #pragma warning(disable:4996) // MSVC 전처리 코드 #define _CRT_SECURE_NO_WARNINGS Plan2. 프로젝트 설정 변경 다음 방법을 ..