13.1 strncpy()不能总在目标串放上终止符’\0’?

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

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

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

 

永不止步步 发表于01-13 10:15 浏览65535次
分享到:

已有0条评论

暂时还没有回复哟,快来抢沙发吧

添加一条新评论

只有登录用户才能评论,请先登录注册哦!

话题作者

永不止步步
金币:67410个|学分:308617个
立即注册
畅学电子网,带你进入电子开发学习世界
专业电子工程技术学习交流社区,加入畅学一起充电加油吧!

x

畅学电子网订阅号