Почему strncpy не обнуляется?

strncpy() предположительно защищает от переполнения буфера. Но если это предотвращает переполнение без нулевого завершения, по всей вероятности, последующая строковая операция будет переполнена. Поэтому, чтобы защититься от этого, я делаю:

strncpy( dest, src, LEN );
dest[LEN - 1] = '\0';

man strncpy дает:

Функция strncpy () аналогична, за исключением того, что копируется не более n байтов src. Таким образом, если среди первых n байтов src нет нулевого байта, результат не будет нулевым.

Без нулевого завершения что-то вроде бы невинное, как:

   printf( "FOO: %s\n", dest );

... может разбиться.

Есть ли лучшие, более безопасные альтернативы?strncpy()

Ответы на вопрос(11)

Ваш ответ на вопрос