#include<stdio.h>
#include<stdlib.h>
int main()
{
char str[10];
char *msg = "0123456789";
int len = 0;
int a=12345;
memset(str, 0, 10);
len = snprintf(str, sizeof(str), "%d", a);
printf("str=%s, len=%u", str, len);
}
str=12345, len=5
#include<stdio.h>
#include<stdlib.h>
int main()
{
char str[10];
char *msg = "0123456789";
int len = 0;
int a=12345;
memset(str, 0, 10);
len = snprintf(str, sizeof(str), "%d+%s", a, msg);
printf("str=%s, len=%u", str, len);
}
str=12345+012, len=16
关于返回值:
如果输出因为size的限制而被截断,返回值将是“如果有足够空间存储,所 应能输出的字符数(不包括字符串结尾的'\0')”,这个值和size相等或者比size大!也就是说,如果可以写入的字符串是 "0123456789ABCDEF"共16位,但是size限制了是10,这样 snprintf() 的返回值将会是 16 而不是 10!
case 1 : 如果要输出的字符串的长度< size, 主要这里不包括=, 因为snprintf会自动将\0加入到str中,
snprintf的返回值是实际str的长度
case 2 : 如果要输出的字符串长度>= size, 则表明str的长度不够写入原有的长度,则snprintf的返回值
在理想情况下(即str的长度足够长)的字符串长度,所以其返回值可能会出现>= size的情况。