手机
当前位置:查字典教程网 >编程开发 >C语言 >strncpy与snprintf 的用法比较
strncpy与snprintf 的用法比较
摘要:strncpy的正确用法:strncpy(dest,src,sizeof(dest));dest[sizeof(dest)-1]=‘';sn...

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。

【strncpy与snprintf 的用法比较】相关文章:

C++函数中return语句的使用方法

c++ dynamic_cast与static_cast使用方法示例

CFile与CStdioFile的文件读写使用方法详解

CStdioFile的用法详细解析

static关键字的作用详解

string与char*转换的使用详解

short与int转换的小例子

基于C++中sprintf的错误总结详解

linux之awk命令的用法

浅析C语言中assert的用法

精品推荐
分类导航