아하
생활

생활꿀팁

견실한도롱이156
견실한도롱이156

gets함수는 되도록 사용하지 말라고하는데 이유가뭘까요?

gets함수는 안전하지 않아서 이용하지 마라 gets는 비표준함수다. 라는 등의 이유로


gets대신 fgets함수를 권유하는 글들을 많이 봤는데요. 대부분 자세한 이유는 써놓지 않아

정확히 무슨 이유인지가 궁금해졌습니다.


gets대신 gets_s를 쓰는 이유는 배열 크기보다 더 큰 문자열을 입력하는 경우를 대비하기 위해서라는 건 알겠는데,,, fgets를 선호하는 이유에 대해알려주실 수 있으신 분 계신가요?

55글자 더 채워주세요.
1개의 답변이 있어요!
  • 프알못
    프알못

    gets 함수는 표준이었습니다. (C11부터는 표준에서 제외되었습니다.)

    gets 함수는 최대 길이를 인자로 받지 않습니다. 입력을 받을 버퍼의 크기를 지정할 수 없습니다.

    입력받기 위한 버퍼를 넘어서도 입력을 계속 받습니다. (그러면 안 됩니다. 보안 취약점!)

    gets_s나 fgets는 입력받을 문자열의 최대 길이를 인자로 받습니다. 버퍼의 길이를 지정할 수 있기 때문에 안전합니다.