C中字符串的库函数strncpy没有以NULL结尾
对于长度受限的字符串函数 strncpy strncat
strncat在结尾字符串后面添加一个NULL,而strncpy却没有
为什么会这样,明显strncpy添加一个NULL会预防溢出,函数的鲁棒性会提高,并且也没什么坏处
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
C库有很多实现,不同平台/工具都有自己的实现
strncpy 函数的实现已经成了标准,如果新库实现跟以往不一样,
会使用户疑惑(加0使得实际拷贝字符数可能为n-1,与预期不符)!
而且有时候利用strncpy的非0结束特性来连接数组
——不建议这样用,但并不是没人这样用,特别是老的开源库