57

用于 C 编程。我如何让数字显示为 00、01、02、03,而不是 0、1、2、3。我只需要在数字前加上 0,直到 10。

我知道当你做小数时你可以做“%.2f”等,但是对于整数呢?

这是我正在使用的......**

printf("Please enter the hours: ");
    scanf ("%d",&hour);
printf("Please enter the minutes: ");
    scanf ("%d",&minute);
printf("Please enter the seconds: ");
    scanf ("%d",&second);
printf("%d : %d : %d\n", hour, minute, second);

}

我需要将数字显示为 00 : 00 : 00

??

4

3 回答 3

82

%02d如果要将前导零填充到两个空格,则需要使用:

printf ("%02d : %02d : %02d\n", hour, minute, second);

例如,请参见以下完整程序:

#include <stdio.h>
int main (void) {
    int hh = 3, mm = 1, ss = 4, dd = 159;
    printf ("Time is %02d:%02d:%02d.%06d\n", hh, mm, ss, dd);
    return 0;
}

输出:

Time is 03:01:04.000159

请记住,这%02d意味着两个字符的最小宽度,因此它将输出 123作为 123. 如果您的值是有效的小时、分钟和秒,那应该不是问题,但值得记住的是,因为许多没有经验的编码人员似乎会错误地认为 2 是最小最大长度。

于 2013-01-31T03:16:07.617 回答
40

使用格式:%02d代替。0使用零填充字段的方法以及该2字段是两个字符宽的意思,因此对于显示少于 2 个字符的任何数字,它将用 0 填充。

于 2013-01-31T03:16:06.900 回答
3

"%.2d"是应该使用的。规则基本上是;

"%<minimum-characters-overall>.<minimum-digits>d".

例如:

"%6.3d"将总共​​打印 6 个字符和至少 3 位数字。

于 2020-07-18T08:46:52.333 回答