프로그래밍

[C언어] scanf_s(%d %c %d)

Woulk 2016. 4. 23. 02:02
반응형

C언어로 계산기를 만드는 방법들은 여러가지들이 있지만 그중에 간단하게 할 수 있는 방법중
scanf로 피연산자와 연산자를 받고 스위치문에 연산자를 넣어서 출력해주는 방식이다.
비주얼 2013까지는 scanf("%d %c %d", &num1, &op, &num2)로 해왔지만 2015로 업데이트되면서scanf를 권장하지 않고 scanf_s를 권장하면서 문제가 생겼다. 잘 되던데 scanf_s("%d %c %d", &num1, &op, &num2)로 하면 안되는것이다. 그래서 구글링을 해서 찾아봤더니 해답은 scanf_s("%d %c %d", &num1, &op, 1, &num2)이다 아마도 scanf가 보안(?)문제때문에 scanf_s를 사용 권장하는데 이 scanf_s는 배열 같은것을 사용할때 size를 입력해줘야되는데 그거때문에 생긴문제가 아닌가 싶다. char는 크기가 1이기때문에 1을 매개변수에 넣으면 해결이 되는 것 간다.

 

결론 : scanf("%d %c %d", &num1, &op, &num2) -> scanf_s("%d %c %d", &num1, &op, 1, &num2)

반응형