strncpy 会不会自动添加终止符

strncpy() 最初被设计为用来处理一种现在已经废弃的数据结构——定长, 不 必以'\0' 结束的"字符串"。strncpy 的另一个怪癖是它会用多个'\0' 填充短串, 直到达到指定的长度。在其它环境中使用strncpy() 有些麻烦, 因为你必须经常在目的 串末尾手工加'\0'。

你可以用strncat 代替strncpy 来绕开这个问题: 如果目的串开始时为空(就 是说, 如果你先用*dest = '\0'), strncat() 就可以完成你希望strncpy() 完成的事情。

另外一个方法是用snprintf(dest,len,"%.*s", n,source)。

如果需要复制任意指定字节(而不是字符串), memcpy() 是个比strncpy() 更好的选择。

你可能感兴趣的:(数据结构)