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

2019. 04. 10. 23:58

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


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

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


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

공유하고 돈벌기 ♥︎

총 1개의 답변이 있습니다.

질문자 채택 답변

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

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

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

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

2019. 04. 11. 01:21
49