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是什么啊?
展开
 我来答
ducky8688
推荐于2018-03-19 · TA获得超过753个赞
知道小有建树答主
回答量:241
采纳率:100%
帮助的人:100万
展开全部
%-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
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式