Error - scanf 반환값이 무시되었습니다.

2021. 9. 7. 00:33C

실수형을 공부하다가 예제 3-6 실수형의 비교를 입력하는데 scanf 반환값이 무시되었다는 오류가 떴다. 

이 오류는 함수 scanf의 반환값을 어딘가에 대입하거나 사용하지 않아서 발생하는 경고이다.

코드 상 문제도 없으며 단순히 버려지는 값이 있음을 알리기 위해 인텔리센스가 안내하는 내용이다.

해결방법은 코드 맨 위에 #pragma warning(disable:4996)을 넣어주고 scanf를 scanf_s로 바꾸어 주는 것이다.

-c4996은 권장되지 않는 함수 사용에 관한 경고이다.

scanf는 MS가 지정한 잘못 쓰면 안전하지 않은 일이 발생할 수 있는 함수들 중 하나이다.

그러나 문제에서처럼 %d %f 같은 고정폭 변수만을 받아오는 경우에는 문제가 안 되나 %c, %s 류 입력들에서 문제가 된다. 버퍼 오버플로우가 발생할 수 있는 배열 입력이기 때문이다.이러한 입력들에 대해 버퍼 크기를 지정하기 위해 MS는 scanf_s를 쓰라고 권고하였다.하지만 scanf_s 는 C++ 표준 문법이 아니므로 에러를 잘라버린다.-> pragma warning(disable:4996)혹은 #define_CRT_SECURE_NO_WARNINGS이렇게 하면 정상적으로 수행된다.

'C' 카테고리의 다른 글

GetStdHandle 함수, SetConsoleTextAttribute 함수  (0) 2022.01.06
C언어 가변인수함수(printf 등)  (0) 2021.12.15
c언어 배열초기화, 비트연산자  (0) 2021.12.15
scanf 사용법 관련  (0) 2021.12.12