>>525 それは使い方が間違っている。
strncpy()の想定するコピー先は、文字配列であり、
'\0'終端文字列では*ない*。
バイナリフォーマット上の固定長バッファに字面
を埋め込むような場合に使う。

最大n文字を、'\0'終端文字列としてコピーしたい場合は、
*d = '\0'; strncat(d, s, n); としとけ。