开发者社区> 问答> 正文

为什么 strncpy() 不能总在目标串放上终止符 '\0'?

为什么 strncpy() 不能总在目标串放上终止符 '\0'?

展开
收起
游客py5kcp7dd6tu6 2022-03-29 21:21:17 659 0
1 条回答
写回答
取消 提交回答
  • strncpy() 最初被设计为用来处理一种现在已经废弃的数据结构---定长, 不必 '\0' 结束的 ``字符串"。strncpy 的另一个怪癖是它 会用多个 '\0' 填充短串, 直到达到指定的长度。在其它 环境中使用 strncpy() 有些麻烦, 因为你必须经常在目的串末尾手工加 '\0'。 你可以用 strncat 代替 strncpy 来绕开这个问题: 如果目的串开始时为空 (就是说, 如果你先用 *dest = '\0'), strncat() 就可以完成你希望 strncpy() 完成的事情。另外一个方法是用 sprintf(dest, "%.*s", n, source)。

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

    2022-03-29 21:21:38
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载