当前位置:  编程技术>网络技术 iis7站长之家

strncpy与snprintf 的用法比较

    来源: 互联网  发布时间:2014-10-18

    本文导语:  strncpy的正确用法: strncpy(dest, src, sizeof(dest));dest[sizeof(dest)-1] = ‘'; snprintf的正确用法:snprintf(dest, sizeof(dest), "%s", src); strncpy的问题:1.size一定要用sizeof(dest)或sizeof(dest)-1,不可误用sizeof(src). 2.手工填0. 务必要把dest的最后一个...

strncpy的正确用法:
strncpy(dest, src, sizeof(dest));
dest[sizeof(dest)-1] = ‘';

snprintf的正确用法:
snprintf(dest, sizeof(dest), "%s", src);

strncpy的问题:
1.size一定要用sizeof(dest)或sizeof(dest)-1,不可误用sizeof(src).
2.手工填0. 务必要把dest的最后一个字节手工设置为0. 因为strncpy仅在src的长度小于dest时,对剩余的字节填0.
3.性能问题。当dest长度远大于src时,由于strncpy会对多余的每个字节填0,会有很大的性能损失。
4.返回值。strncpy返回dest,因而无法知道拷贝了多少个字节。

snprintf的问题:
1.不可省略第三个参数"%s",隐患是,如果src中包含%,会引发core。
2.性能问题。当src长度远大于dest时,由于snprintf要返回src的字节数,需要扫描src,会有很大的性能损失。
3.返回值。如果当前buf够用,返回实际写入的字符数;如果不够用,返回将要写入的字符数。换句话说,返回值就是传入的字符数目。

总结:
1.snprintf使用比strncpy简洁。
2.snprintf可以获取被拷贝的字节数。
3.二者都有性能问题。如果src远大于dest,用strncpy;如果dest远大于src,用snprintf。


    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 函数strncpy()的问题!
  • strncpy未声明?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3