Это абсолютно необходимо? Нет , потому что когда вы вызываете scanf
, strcpy
(за исключением strncpy
, где вам нужно вручную поставить ноль, если он превышает размер), он копирует нулевой терминатор для вас.Хорошо ли это делать в любом случае? Не совсем , это не очень помогает проблеме переполнения буфера, так как эти функции в любом случае будут превышать размер буфера.Тогда как лучше?используйте c ++ с std::string
.
Кстати, если вы обращаетесь к string1[257]
/ записываете его, это будет вне пределов, так как вы получаете доступ / записываете элемент 258 массив размером 257. (индекс на основе 0)