C语言输出printf里面%*d是什么意思?

我看二级书上写的。。。但是我在电脑上测试。。测试出的数字之前貌似多了很多个空格。。看的好奇怪。。。... 我看二级书上写的。。。但是我在电脑上测试。。测试出的数字之前貌似多了很多个空格。。看的好奇怪。。。 展开
 我来答
百度网友0e3237c
2018-07-24 · TA获得超过7187个赞
知道答主
回答量:94
采纳率:0%
帮助的人:5.2万
展开全部

printf中的%*d的意思是输出*个宽度的%d(整形)。

例子:

a=5;

b=6;

printf("%*d",a,b);

其中,a代表*,即%5d,格式化输出5个宽度的整形b。

最后输出的结果为    6.即[4个空格][6].

扩展内容:

printf()函数:

printf()函数是格式化输出函数, 一般用于向标准输出设备按规定格式输出信息。

printf()函数的调用格式为: printf("<格式化字符串>", <参量表>)。

其中式样化字符串包括两部分内容: 一部分是正常字符, 这些字符将按原样输出;另一部分是式样化规定字符, 以"%"开端, 后跟一个或几个规定字符, 用来确定输出内容式样。 参量表是需求输出的一系列参数, 其个数务必与式样化字符串所阐明的输出参数个数一样多, 各参数之间用","分开, 且顺序逐一对应, 不然将会出现意想不到的过失。

格式输出,它是c语言中产生格式化输出的函数(在 stdio.h 中定义)。用于向终端(显示器、控制台等)输出字符。格式控制由要输出的文字和数据格式说明组成。要输出的文字除了可以使用字母、数字、空格和一些数字符号以外,还可以使用一些转义字符表示特殊的含义。

资料参考:printf函数 - 百科

杜哥是个小天才
2018-07-20 · TA获得超过1809个赞
知道答主
回答量:32
采纳率:0%
帮助的人:9466
展开全部

c语言中printf函数是显示输出函数,其中百分号后面的字符定义如下:

%a(%A)     浮点数、十六进制数字

%c             字符

%d             有符号十进制整数

%f              浮点数(包括float和doulbe)       

%e(%E)     浮点数指数输出[e-(E-)记数法]      

%g(%G)     浮点数不显无意义的零"0" 

%i              有符号十进制整数(与%d相同)        

%u             无符号十进制整数

拓展资料

C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。

尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
帐号已注销
2018-07-27 · TA获得超过4404个赞
知道小有建树答主
回答量:349
采纳率:0%
帮助的人:99.9万
展开全部

%*d  表示输出的数字占据的宽度

比如执行以下代码

int main()

{

int a[5]={1,2,3,4,5};

for(int i=0;i<5;i++){

printf("%4d",a[i]);

}

return 0;

}

出来的结果是

但如果改为 printf("%d",a[i]);

-------------------------------------------------------------

但如果在scanf中加入*号 指跳过输入内容

执行以下代码

int main()

{

int a,b;

scanf("%d%*d%d",&a,&b);

printf("%4d%4d",a,b);

return 0;

}

输入 1 2 3

程序直接忽略2,输出1 3

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
水宫御子88
2015-10-27 · TA获得超过2238个赞
知道大有可为答主
回答量:3792
采纳率:50%
帮助的人:750万
展开全部

在printf可以这样理解*被替换成printf("%*d",number,var);中的number,然后按照printf("%number d"10);来格式化输出数据,看代码:

#include<stdio.h>
void main()
{
printf("000000123450000000\n");
printf("1=%d,2=%*d,3=%d\n",1,5,3,3);
return;
}

从图中可以看出输出 了5个空格。

补充:在scanf中其表示忽略该输入

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
无需崇拜
2012-07-04 · TA获得超过254个赞
知道小有建树答主
回答量:143
采纳率:0%
帮助的人:85.2万
展开全部
楼主好像已经知道了这个问题的答案了吧.
printf("%*d",a,b);其中a作为b的输出宽度控制.
其实也就是*的替换功能了,正是由于*的替换功能结合%md的宽度控制,替换之后具体怎么输出的规则就和宽度控制的规则一样了.
举个例子:
printf("%*d",2,123);//输出为:123,相当于%2d输出的效果,因为123位数超过2,故原样输出,且为默认的右对齐.
printf("%*2d",1,123);//输出应为[7的空格][123],即相当于%12d输出的效果.
欢迎交流.
追问
printf("%*d",a,b);这个指定宽度是a的值吗?
追答
呃~打错了,第二个例子输出应该是:
[9个空格][123],即相当于%12d输出的效果
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(6)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式