单臂电桥使用方法图解:strncpy和snprintf的正确用法详解_9
来源:百度文库 编辑:偶看新闻 时间:2024/04/28 08:51:47
strncpy的正确用法:
strncpy(dest, src, sizeof(dest));
dest[sizeof(dest)-1] = ‘\0’;
snprintf的正确用法:
snprintf(dest, sizeof(dest), "%s", src);
strncpy的问题:
- size一定要用sizeof(dest)或sizeof(dest)-1,不可误用sizeof(src).
- 手工填0. 务必要把dest的最后一个字节手工设置为0. 因为strncpy仅在src的长度小于dest时,对剩余的字节填0.
- 性能问题。当dest长度远大于src时,由于strncpy会对多余的每个字节填0,会有很大的性能损失。
- 返回值。strncpy返回dest,因而无法知道拷贝了多少个字节。
snprintf的问题:
- 不可省略第三个参数"%s",隐患是,如果src中包含%,会引发core。
- 性能问题。当src长度远大于dest时,由于snprintf要返回src的字节数(参见:http://blog.bitfly.cn/post/c-safe-str-cpy/),需要扫描src,会有很大的性能损失。
- 返回值。如果当前buf够用,返回实际写入的字符数;如果不够用,返回将要写入的字符数。换句话说,返回值就是传入的字符数目。
总结:
- snprintf使用比strncpy简洁。
- snprintf可以获取被拷贝的字节数。
- 二者都有性能问题。如果src远大于dest,用strncpy;如果dest远大于src,用snprintf。
“(”和“)”的正确读音
请问笔记本电脑和教学用的投影仪如何正确连接?
用粉底液和防晒霜的正确顺序是什么
求教正确的俯卧撑姿势和正确的锻炼方法
strncpy函数为什么不按最大值复制?
跑步的姿势和正确方法
饮用蜂蜜的正确方法和注意事项
请问QA和QC的正确翻译
正确的坐姿和睡姿是什么
焊培 和 焊培 哪一个是正确的?
正确的护肤和化妆程序是什么
洗衣服的正确方法和窍门
谁知道“醯”的正确发音和含义
找正确的歌名和歌手
排挡的正确使用方法和换挡步骤?
PS2 正确开关机和保养的办法
使用和清洗隐形眼镜的正确方法?
洗衣服的正确方法和窍门
求教正确的投篮方式和姿势
刷牙的正确方法和时间.
用什么浸酒是正确的?
用正确的介词填空
用正确的介词填空
用正确的时态填空