C언어 강좌 제 6강 입력 함수를 이용해 입출력을 해보자! (scanf 함수)
안녕하세요!
Aoi Kazto입니다아~!
오늘은 색다르게 다아~! 라고 해봤어요! 색다른 느낌 드나요?!
안들면 죄송해요...
아마도.. 잘 기억은 안나는데..
배열을 마지막으로 사진으로 찍어보았습니다..
scanf("%s", &String);
이부분이 핵심입니다...!!
scanf 는 말 그대로 scan 읽는다 fucntion 함수 입니다.
즉 읽는 함수란 거죠..! 그런데 여러분들
&String을 보실수가 있습니다..
하지만 printf 에는 &가 없는것을 알수가 있죠..!
왜 &가 붙을까요?
그건 간단 합니다. [여기]
C#의 경우는 읽은 값을 반환을 하는 반면
C언어 의 경우는 인수에 값을 전달하기 때문이죠..!
즉 &는 나중에 설명을 하겠지만.. 간단하게 설명을 하자면..
&을 사용해야만 하는 함수는 main 함수에 있는 String 변수를 수정이 가능하지만
&을 사용하지 않는 printf는 String 변수를 수정이 불가능 합니다.
아무리 함수 내부에서 String을 수정을 하더라도 main 함수에 존재하는
String을 수정하는건 불가능 하기 때문에 &을 붙여 주는 겁니다..
그 다음에는 VS 2010년에는 문제없이 컴파일이 되겠지만은.
그 이후 버전은 이렇게 C4996 오류가 뜨게 됩니다..
그냥 간단하게 말하자면.. VS만의 보안 경고를 의미 하는거죠.. 해결책은
총 3가지가 있습니다.. 전 그중 2가지만 다룰것이며 나중에 1가지를 더 알려드리겠습니다..
팁 강좌로서..!!
첫번째 해결책 입니다.
#define이라는 예약어를 이용을 해 이러한 경고를 없애주는것 입니다.
두번째의 경우는 에러가 안나게끔 VS에서 권장하는 함수를 사용 하면 되는 것 입니다.
scanf_s 간단하게 요약하자면
scan + function + Secure 입니다.
즉 입력 함수 + 보안적용! 이라는 뜻 입니다.
참고로 printf_s도 있는데 에러가 발생 안합니다..
크게 문제가 없다는 뜻이겠죠?!
저는 이렇게 입력을 하게되면
이렇게 " " 까지 읽게 됩니다..
자세하게 알고 싶으시면 [1. 여기]를 택하시면 되고.
조금 덜 하더라도 이유라도 알고 싶으시면 [2. 여기]를 택 하면 됩니다.
이상입니다..! 감사합니다!!
.