你可以用 strncat 代替 strncpy 来绕开这个问题: 如果目的串开始时为空 (就是说, 如果你先用 *dest = '\0'), strncat() 就可以完成你希望 strncpy() 完成的事情。另外一个方法是用 sprintf(dest, "%.*s", n, source)。
如果需要复制任意字节 (而不是字符串), memcpy() 是个比 strncpy() 更好的选择。