리눅스는 우분투 16.04LTS버전에서 C언어를 공부중인데 gcc로 컴파일했는데 gets()가 위험하다고 경고 날라오는데 어떡하나요?fgets밖에 답이 없다면 쓰겠지만 아직 공부하는 단계라 gets()를 익히고 싶습니다만...
별로 권장해 드리고 싶지 않습니다.
질문자님께서 C언어를 지금 공부하시는 단계라면 반드시 만들어야 할 습관이 있기 때문이지요. 바로 표준 라이브러리로 문자열을 다룰 때는 반드시 버퍼의 크기를 신경써주어야 한다는 것입니다.
gets 함수가 어떤 동작을 하는지 공부하는 정도는 괜찮습니다. 타인의 코드를 읽을 필요가 있으실 테니까요. gets 함수가 왜 위험한지 이해하실 수 있다면 더 좋습니다.
그러나 질문자님께서 새로운 프로그램을 작성하실 때는 gets 함수의 사용은 지양하시는 편이 좋습니다.
그러면 gets 함수가 어떻게 동작하는지만 알고 넘어가겠습니다. 그냥 fgets 함수를 써야겠네요... 답변 감사합니다.
텍스트 포맷에 대한 자세한 정보
<code>
<blockcode>
<apache>
<applescript>
<autoconf>
<awk>
<bash>
<c>
<cpp>
<css>
<diff>
<drupal5>
<drupal6>
<gdb>
<html>
<html5>
<java>
<javascript>
<ldif>
<lua>
<make>
<mysql>
<perl>
<perl6>
<php>
<pgsql>
<proftpd>
<python>
<reg>
<spec>
<ruby>
<foo>
[foo]
별로 권장해 드리고 싶지 않습니다.
별로 권장해 드리고 싶지 않습니다.
질문자님께서 C언어를 지금 공부하시는 단계라면 반드시 만들어야 할 습관이 있기 때문이지요.
바로 표준 라이브러리로 문자열을 다룰 때는 반드시 버퍼의 크기를 신경써주어야 한다는 것입니다.
gets 함수가 어떤 동작을 하는지 공부하는 정도는 괜찮습니다. 타인의 코드를 읽을 필요가 있으실 테니까요.
gets 함수가 왜 위험한지 이해하실 수 있다면 더 좋습니다.
그러나 질문자님께서 새로운 프로그램을 작성하실 때는 gets 함수의 사용은 지양하시는 편이 좋습니다.
답변 감사합니다.
그러면 gets 함수가 어떻게 동작하는지만 알고 넘어가겠습니다.
그냥 fgets 함수를 써야겠네요...
답변 감사합니다.
댓글 달기