C语言如何在数字前加0进行格式化?

How to add a 0 in front of number in C for formatting?

我有 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 的情况下在开头连接一个零,但我觉得好像有更好的方法……我只是不知道。任何帮助将不胜感激,谢谢!!!

您可以在每个 %u 说明符前添加一个数字字段宽度,以赋予它特定的大小。在这种情况下,那将是 2.

然后在其之前添加 0 标志以指示该字段应在左侧填充零。

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