Предотвращение переполнения буфера с помощью get [duplicate]

На этот вопрос уже есть ответ здесь:

Почему функция get так опасна, что ее нельзя использовать? 11 ответов

Декларацияgets является:

char * gets ( char * str );

Обратите вниманиевопиющее упущение максимального размера дляул.

cplusplus.com says2:

Обратите внимание, что метод get довольно сильно отличается от fgets: метод get не только использует stdin в качестве источника, но и не включает в себя конечный символ новой строки в результирующей строке и не позволяет указать максимальный размер для str (что может привести к переполнению буфера).

А также:

Самая последняя редакция стандарта C (2011) окончательно удалила эту функцию из своей спецификации. Эта функция устарела в C ++ (по состоянию на стандарт 2011 года, который следует за C99 + TC3).

Теперь, конечно,fgets обычно рекомендуется в качестве заменыgetsпотому что его объявление выглядит так:

char * fgets ( char * str, int num, FILE * stream );

ЭтоДЕЛАЕТ принять параметр размера. Это делает это намного безопаснее, чем.gets

Теперь, так как яЯ не желаю выкладывать деньги, чтобы загрузить или купитьC11 standardМожет ли кто-нибудь пролить свет на причину осуждающегоgets а что это значит для будущего кода? Почему он существовал в том же месте, когдаfgets безопаснее? И почему этотолько сейчас быть устаревшим?

Ответы на вопрос(2)

Ваш ответ на вопрос