strncpy()
предположительно защищает от переполнения буфера. Но если он предотвратит переполнение без нулевого завершения, то, скорее всего, последующая операция строки будет переполняться. Поэтому для защиты от этого я нахожу себя:
strncpy( dest, src, LEN );
dest[LEN - 1] = '\0';
man strncpy
дает:
Функция strncpy() аналогична, за исключением того, что скопировано не более n байтов src. Таким образом, если нет нулевого байта среди первых n байтов src, результат не будет заканчиваться нулем.
Без нулевого завершения что-то вроде невинного, как:
printf( "FOO: %s\n", dest );
... может произойти сбой.
Есть ли лучшие, более безопасные альтернативы strncpy()
?