c语言问题:重点解释:sprintf(str1,"%-s%0*d",str2,sizeof(str1)-strlen(str2),0); 这五个参数是干什么的
#include<stdio.h>main(){charstr1[20];charstr2[15]="Hello,World!";sprintf(str1,"%-s%0*...
#include <stdio.h>
main()
{
char str1[20];
char str2[15]="Hello,World!";
sprintf(str1,"%-s%0*d",str2,sizeof(str1)-strlen(str2),0);
printf("str1:[%s][%d]\n",str1,strlen(str1));
},"%-s%0*d是什么啊? 展开
main()
{
char str1[20];
char str2[15]="Hello,World!";
sprintf(str1,"%-s%0*d",str2,sizeof(str1)-strlen(str2),0);
printf("str1:[%s][%d]\n",str1,strlen(str1));
},"%-s%0*d是什么啊? 展开
1个回答
展开全部
%-s -号表示左对齐,s表示输出字符串,不过由于没有指定宽度所以%-s与%s是一样的效果
%0*d *是占位符,表示具体的宽度由后面的参数来指定, 0表示如果输出的数据长度不够的话以0补足, d表示输出整数,例如 printf("%05d“, 123); 是输出 00123,
printf( "%0*d", 5, 123 ); 也等价于 printf(“%05d”,123);结果也是 00123
你这个例子中,sizeof(str1)的值为20, strlen(str2)的值为12 所以就相当于输出 str2,后面被20-12=8个0
也就是 Hello,World!00000000
%0*d *是占位符,表示具体的宽度由后面的参数来指定, 0表示如果输出的数据长度不够的话以0补足, d表示输出整数,例如 printf("%05d“, 123); 是输出 00123,
printf( "%0*d", 5, 123 ); 也等价于 printf(“%05d”,123);结果也是 00123
你这个例子中,sizeof(str1)的值为20, strlen(str2)的值为12 所以就相当于输出 str2,后面被20-12=8个0
也就是 Hello,World!00000000
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询