void sprintf_practice()
{
char array[30] = {""};
char *name ="yangtaiping";
int ret = snprintf(array, 10, "name : %s", name);
printf("array = %s\n", array);
array[9] = '\0';
printf("ret = %d\n", ret);
printf("array = %s\n", array);
printf("strlen(array) = %d\n", 10);
}
linux上输出:
array = name : yaret = 18
array = name : ya
strlen(array) = 10
windows 上的输出
array = name : yan
ret = -1
array = name : ya
strlen(array) = 10
其主要区别有两点:
1,长度大于限制长度时,linux:返回实际长度,而windows返回 -1,;
2,添加 null-terminate ,linux:限制长度内最后一byte添加,而windows,在限制长度后一byte添加;