如何在C中的数字前面添加0进行格式化?

如何在C中的数字前面添加0进行格式化?,c,format,printf,long-integer,C,Format,Printf,Long Integer,我将seconds的值设置为简单的数字,如0或60,并希望以00:00:00的格式打印它。例如,60秒将显示为00:01:00 所以我有一个价值观: unsigned long long sec; unsigned long long min; unsigned long long hr; unsigned long long t; 我这样做: //pass in value of seconds hr = sec/3600; t = sec%3600; min= t/60; sec

我将
seconds
的值设置为简单的数字,如
0
60
,并希望以
00:00:00
的格式打印它。例如,60秒将显示为
00:01:00

所以我有一个价值观:

unsigned long long sec; 
unsigned long long min;
unsigned long long hr; 
unsigned long long t; 
我这样做:

//pass in value of seconds 
hr = sec/3600;
t = sec%3600; 
min= t/60;
sec = t%60;

char *colon = ":";

printf("%llu%s%llu%s%llu\t", hr,colon,min,colon,sec);

这将部分打印我想要的内容,如上一个示例中的
0:1:0
。但是,如果长度仅为1个字符,我需要在前面多加一个0。。。。我能想到的唯一方法是转换成字符串,如果长度为1,在开始处加上一个零,但我觉得有更好的方法。。。。我只是不知道。任何帮助都将不胜感激,谢谢

您可以在每个
%u
说明符之前添加一个数字字段宽度,使其具有特定的大小。在这种情况下,这将是
2

然后在该字段之前添加
0
标志,以指示该字段应保留零填充

printf("%02llu%s%02llu%s%02llu\t", hours,colon,minutes,colon,seconds);

谢谢!!!:)所以基本上,字段的长度应该是2,如果不在开始时用0填充它,直到它变为2。这意味着另一个选项可以是%02d