snprintf详解——知识点3

(一)函数原型

int snprintf(char * dest , size_t size, const char * fomat,...);

说明1:大家都知道,sprintf不能检查目标字符串的长度,可能会造成众多安全问题。

说明2:最多从源串中拷贝  size-1 个字符串,然后再在后面添加一个  0, 是为了防止目标串溢出。

说明3: 返回值,当成功时,返回的是  将要  写成的字符串长度。若出错,则返回负值。

说明4:linux下面使用的是snprintf(),windows下面使用的是 _snprintf()

说明5:需要包含头文件 <stdio.h>


(二)函数的应用 

1 整型数字转换成字符串(已测试)

int a[5] = {1,2,3,4,5};
char * s = malloc(sizeof(char) * 100);
snprintf(s, 100, "%d__%d__%d__%d__%d__",a[0], a[1], a[2], a[3], a[4]);

printf("%s", s);

2 浮点型转换成字符串

double i = 12.0988;
char s1[10];
snprintf(s1, sizeof(s1), "%f", i);

printf("%s",s1);

3 拷贝字符串

使用snprintf的另一个好处是可以实现字符串的连接,再加上其安全的功能,strcat基本上就可以抛弃了。

char *s4 = "12345";
char s5[20];
char *s6 = "6789";
snprintf(s5, sizeof(s5), "%s", s4);
printf("%s\n",s5);
snprintf(s5 + strlen(s4), sizeof(s5), "%s", s6);

printf("%s\n", s5);


在成长的道路上坐着复兴号一路狂奔!

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值