你可以用 strncat 代替 strncpy 來繞開這個問題: 如果目的串開始時為空 (就是說, 如果你先用 *dest = '\0'), strncat() 就可以完成你希望 strncpy() 完成的事情。另外一個方法是用 sprintf(dest, "%.*s", n, source)。
如果需要複製任意字節 (而不是字符串), memcpy() 是個比 strncpy() 更好的選擇。