Функция strncpy считается небезопасной, потому что не гарантирует установку нулевого символа в конец буфера. 1
Это может привести к тому, что при попытке печати строки из буфера или работы с ней произойдёт чтение данных за пределами буфера, что приведёт к аварийному завершению программы. 1
Кроме того, функция не проверяет, достаточно ли места в строке назначения, из-за чего может возникнуть ошибка переполнения буфера. 2
Для работы с функцией рекомендуется передавать значение, которое на единицу меньше размера буфера, а также самостоятельно устанавливать последний байт в 0. 1
Существуют более безопасные версии функции, например strncpy_s. 25