分享讨论——snprintf函数的用法

[复制链接]
702|5
手机看帖
扫描二维码
随时随地手机跟帖
baimiaocun2015|  楼主 | 2016-9-18 20:28 | 显示全部楼层 |阅读模式
该函数在我们开发写程序的时候会经常用到的,,其具体的作用是啥?怎样用的?在这里跟大家一块分享讨论下的。。
baimiaocun2015|  楼主 | 2016-9-18 20:29 | 显示全部楼层
函数原型:int snprintf(char *restrict buf, size_t n, const char * restrict  format, ...);
函数说明:最多从源串中拷贝n-1个字符到目标串中,然后再在后面加一个0。所以如果目标串的大小为n 的话,将不会溢出。

函数返回值:若成功则返回欲写入的字符串长度,若出错则返回负值。

这个很重要的。。

使用特权

评论回复
baimiaocun2015|  楼主 | 2016-9-18 20:30 | 显示全部楼层
应用例程的,,
#include <stdio.h>
#include <stdlib.h>

int main()
{
     char str[10]={0,};
     snprintf(str, sizeof(str), "0123456789012345678");
     printf("str=%s/n", str);
     return 0;
}

使用特权

评论回复
baimiaocun2015|  楼主 | 2016-9-18 20:31 | 显示全部楼层
这个非常需要注意的

补充一下,snprintf的返回值是欲写入的字符串长度,而不是实际写入的字符串度。如:
char test[8];
int ret = snprintf(test,5,"1234567890");
printf("%d|%s/n",ret,test);

运行结果为:
10|1234

使用特权

评论回复
baimiaocun2015|  楼主 | 2016-9-18 20:32 | 显示全部楼层
还有其他相关的应用注意事项的,欢迎大家一块的分享。。

使用特权

评论回复
zhangbo1985| | 2016-9-18 22:06 | 显示全部楼层
baimiaocun2015 发表于 2016-9-18 20:31
这个非常需要注意的

补充一下,snprintf的返回值是欲写入的字符串长度,而不是实际写入的字符串度。如:

这一点的以前也罢我给忽悠了的,需要注意。。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

27

主题

1870

帖子

2

粉丝