strncpy与snprintf 的用法比较

 更新时间:2013年07月25日 09:24:47   作者:  
以下是对strncpy与snprintf的具体用法以及区别进行了详细的分析介绍,需要的朋友可以过来参考下

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。

相关文章

  • C语言编写汉诺塔游戏

    C语言编写汉诺塔游戏

    这篇文章主要介绍了C语言编写汉诺塔游戏,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2021-11-11
  • 利用C语言编辑画图程序的实现方法(推荐)

    利用C语言编辑画图程序的实现方法(推荐)

    下面小编就为大家带来一篇利用C语言编辑画图程序的实现方法(推荐)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-06-06
  • C语言实现宿舍管理系统设计

    C语言实现宿舍管理系统设计

    这篇文章主要为大家详细介绍了C语言实现宿舍管理系统设计,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03
  • 一文搞懂C++中继承的概念与使用

    一文搞懂C++中继承的概念与使用

    我们都知道面向对象语言的三大特点是:**封装,继承,多态。**之前在类和对象部分,我们提到了C++中的封装,那么今天呢,我们来学习一下C++中的继承
    2022-07-07
  • C++ 中Vector常用基本操作

    C++ 中Vector常用基本操作

    标准库vector类型是C++中使用较多的一种类模板,本文给大家分享C++ 中Vector常用基本操作,感兴趣的朋友一起看看吧
    2017-10-10
  • C++ OpenCV实战之形状识别

    C++ OpenCV实战之形状识别

    本案例通过使用OpenCV中的approxPolyDP进行多边形近似,进而进行基础形状识别(圆、三角形、矩形、星形…),快跟随小编一起动手尝试一下
    2022-07-07
  • QT中QChart绘制折线图

    QT中QChart绘制折线图

    本文主要介绍了QChart绘制折线图,Qt Charts基于Qt的Graphics View架构,其核心组件是QChartView 和 QChart,感兴趣的可以了解一下
    2022-04-04
  • C++常用字符串分割方法实例汇总

    C++常用字符串分割方法实例汇总

    这篇文章主要介绍了C++常用字符串分割方法实例汇总,包括了strtok函数、STL、Boost等常用的各类字符串分割方法,非常具有实用价值,需要的朋友可以参考下
    2014-10-10
  • C语言实现飞机订票系统

    C语言实现飞机订票系统

    这篇文章主要为大家详细介绍了C语言实现飞机订票系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-12-12
  • c语言 字符串的拼接和分割实例

    c语言 字符串的拼接和分割实例

    今天小编就为大家分享一篇c语言 字符串的拼接和分割实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-12-12

最新评论