Ответы Mail.ru: Ответ на вопрос "Strncpy не ставит NULL в конце массива если на хватает места"

Она не впендюривает символ, просто 3-й не перезаписывается. Сделано так чтобы можно было изменять часть строки-источника без ее обрезки нулевым символом.

Это же написано в спецификации:

 No null-character is implicitly appended at the end of destination 
if source is longer than num. Thus, in this case, destination shall 
not be considered a null terminated C string (reading it as such 
would overflow).