非常奇怪的printf格式字符 "%0*d"解决思路
非常奇怪的printf格式字符 "%0*d"
给一个简单程序示例:
#include "stdio.h "
#include "conio.h "
main()
{
int i,a=0;
for (i=0;i <30;i++)
printf( "%0*d\n ",a+i);
getch();
}
这里的 printf( "%0*d\n ",a+i);中
%0*d 到底是什么意思?
我的机器运行结果如下(vs.net 2003 + winxp):
2090031951
2090031951
2090031951
2090031951
2090031951
2090031951
2090031951
2090031951
2090031951
2090031951
2090031951
02090031951
002090031951
0002090031951
00002090031951
000002090031951
0000002090031951
00000002090031951
000000002090031951
0000000002090031951
00000000002090031951
000000000002090031951
0000000000002090031951
00000000000002090031951
000000000000002090031951
0000000000000002090031951
00000000000000002090031951
000000000000000002090031951
0000000000000000002090031951
00000000000000000002090031951
怎么也弄不明白为什么会输出这样的值
------解决方案--------------------
%0*d
% 表示这个是一个 格式控制串
0 这个填充字符,表示当输出长度不足指定长度时候, 用 0填充不足的部分
* 这个是指定输出宽度
d 这个表示输出整数
给一个简单程序示例:
#include "stdio.h "
#include "conio.h "
main()
{
int i,a=0;
for (i=0;i <30;i++)
printf( "%0*d\n ",a+i);
getch();
}
这里的 printf( "%0*d\n ",a+i);中
%0*d 到底是什么意思?
我的机器运行结果如下(vs.net 2003 + winxp):
2090031951
2090031951
2090031951
2090031951
2090031951
2090031951
2090031951
2090031951
2090031951
2090031951
2090031951
02090031951
002090031951
0002090031951
00002090031951
000002090031951
0000002090031951
00000002090031951
000000002090031951
0000000002090031951
00000000002090031951
000000000002090031951
0000000000002090031951
00000000000002090031951
000000000000002090031951
0000000000000002090031951
00000000000000002090031951
000000000000000002090031951
0000000000000000002090031951
00000000000000000002090031951
怎么也弄不明白为什么会输出这样的值
------解决方案--------------------
%0*d
% 表示这个是一个 格式控制串
0 这个填充字符,表示当输出长度不足指定长度时候, 用 0填充不足的部分
* 这个是指定输出宽度
d 这个表示输出整数