Я был просто отмечен курсовой работой за это неправильное решение переполнения буфера в c, но не был предоставлен отзыв о том, как это было неправильно. Может ли кто-нибудь сообщить мне, в чем проблема? Спасибо.Что не так с этим решением переполнения буфера в c?
На вопрос, сформулированный обеспечить решение в случае более длинная строка, чем 16 был принят в этой функции:
void function(char *str)
{
char buffer[16];
strcpy(buffer, str);
}
А вот мое решение
void function(char *str)
{
size_t str_length = strlen(str);
char buffer[str_length];
strcpy(buffer, str);
}
Благодаря
Ваше решение также зависит от массивов переменной длины, которые не были доступны до C99. Возможно, инструктор не знает, что теперь им разрешено. –