C语言如何在数字前加0进行格式化?
How to add a 0 in front of number in C for formatting?
我有 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);
我有 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);