• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C语言 > strncpy与snprintf 的用法比较

strncpy与snprintf 的用法比较

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了strncpy函数用法,strncpy s用法,strncpy的用法,strncpy s函数用法,c strncpy函数用法等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

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

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。

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • strncpy与snprintf 的用法比较

相关文章

  • 2017-05-28C++ COM编程之QueryInterface函数(一)
  • 2017-05-28浅谈C++中派生类对象的内存布局
  • 2022-04-30C语言指针是什么?1分钟彻底理解C语言指针的概念
  • 2017-05-28计时器的time_t和clock_t 的两种实现方法(推荐)
  • 2017-05-28C++中四种加密算法之AES源代码
  • 2017-05-28浅析_tmain()与main()的区别
  • 2017-05-28详解C++的模板中typename关键字的用法
  • 2017-05-28详解Linux的SOCKET编程
  • 2017-05-28WM_CLOSE、WM_DESTROY、WM_QUIT及各种消息投递函数详解
  • 2017-05-28C++编程中逗号运算符和条件运算符的使用方法讲解

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • C语言实现字母大小写转换的方法
    • C语言中查询进程信号是否被遮罩或搁置的简单方法
    • C++中关于[]静态数组和new分配的动态数组的区别分析
    • VC WinExec打开指定程序或者文件的方法
    • vector, list, map在遍历时删除符合条件的元素实现方法
    • 数据结构课程设计-用栈实现表达式求值的方法详解
    • C语言 扩展欧几里得算法代码
    • C语言中数组的一些基本知识小结
    • Linux C 时间函数应用
    • 深入解析C++ Data Member内存布局

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有