Дуглас Лидер правильно понял. Существует ограничение на полезность замены strcpy, если вы не готовы выполнять основную работу по передаче хорошей, разумной длины буфера в каждом конкретном случае. Это много работы!
Хорошая новость в том, что оно того стоит! Несколько лет назад я участвовал в нескольких проектах C ++, которые были запоздалыми, с ошибками и ненадежными. Объявив strcpy и strlen запрещенными и потратив 2-3 дня на проект, чтобы заменить их на пользовательские strncpy / strnlen, во всех этих проектах мы неожиданно могли работать в течение нескольких дней вместо часов. Мы также видели много усеченных строк, появляющихся на экранах и в файлах журналов. Это дало нам подсказки, необходимые для отслеживания проблем с усечением, которые раньше вызывали сбои.
Если вы не хотите этого делать, вы можете получить гораздо меньшее преимущество, просто проверив оба параметра указателя на NULL, и ограничив максимальный размер копии строки и ведя журнал все время, когда граница достигнута. Не делайте strlen ни с одним из параметров, так как strlen с радостью вылетит на вас, если строка неправильно обнуляется.
В настоящее время в новых проектах используются хорошие строковые объекты, но существует множество устаревших кодов, которые этого не делают.