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

时间:2016-02-19 19:36:51

标签: c format printf long-integer

我将seconds的值设为060这样的简单数字,我希望以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,则在开头处结束零,但我觉得有更好的方式......我只是不知道。任何帮助将不胜感激,谢谢!

1 个答案:

答案 0 :(得分:3)

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

然后在此之前添加0标志,以指示该字段应使用零填充。

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