Evitar estouros de buffer com get [duplicado]

Esta pergunta já tem uma resposta aqui:

Por que a função gets é tão perigosa que não deve ser usada? 11 respostas

A declaração degets é:

char * gets ( char * str );

Note oomissão flagrante de um tamanho máximo parastr.

cplusplus.com diz2:

Observe que get é bem diferente de fgets: não só usa stdin como fonte, mas também não inclui o caractere de nova linha final na string resultante e não permite especificar um tamanho máximo para str (o que pode levar a estouros de buffer)

E também:

A revisão mais recente do padrão C (2011) removeu definitivamente essa função de sua especificação. A função foi descontinuada em C ++ (a partir do padrão de 2011, que segue C99 + TC3).

Agora, é claro,fgets é geralmente recomendado como substituição degets, porque sua declaração se parece com isso:

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

istoFAZ pegue um parâmetro de tamanho. Isso torna muito mais seguro do quegets.

Agora, já que não estou disposto a gastar dinheiro para baixar ou comprar oC11 standard, alguém pode lançar alguma luz sobre o motivo da depreciaçãogets e o que isso significa para o código futuro? Por que existia no mesmo lugar quandofgets é mais seguro? E porque ésó agora sendo preterido?

questionAnswers(2)

yourAnswerToTheQuestion