我正在查看类似于以下的代码行:
sprintf(buffer,"%02d:%02d:%02d",hour,minute,second);
我认为符号字符串是指每小时,每分钟等显示的数字字符数 - 或者类似的东西,我不完全确定。
通常情况下,我可以解决这类问题,但我一直无法在谷歌上找到任何有用的参考搜索“%02d%01d”。有谁能够为我阐明这一点?
答案 0 :(得分:43)
您应该一直在搜索%02d
功能,而不是使用Google搜索sprintf()
。
%02d
表示“格式化带有2位数的整数,左边用零填充”,所以:
Format Data Result %02d 1 01 %02d 11 11
答案 1 :(得分:26)
他们正在格式化String
。 Java特定语法在java.util.Formatter
中给出。
一般语法如下:
%[argument_index$][flags][width][.precision]conversion
%02d
执行十进制整数转换d
,格式为零填充(0
标志),宽度为2
。因此,int
参数的值为7
,将"07"
格式化为String
。
您可能还会看到此格式字符串,例如: String.format
这些只是一些常用的格式,并没有详尽地涵盖语法。
System.out.printf("Agent %03d to the rescue!", 7);
// Agent 007 to the rescue!
您可以使用-
标志进行左对齐;否则这是正确的理由。
for (Map.Entry<Object,Object> prop : System.getProperties().entrySet()) {
System.out.printf("%-30s : %50s%n", prop.getKey(), prop.getValue());
}
这打印如下:
java.version : 1.6.0_07
java.vm.name : Java HotSpot(TM) Client VM
java.vm.vendor : Sun Microsystems Inc.
java.vm.specification.name : Java Virtual Machine Specification
java.runtime.name : Java(TM) SE Runtime Environment
java.vendor.url : http://java.sun.com/
要获得更强大的邮件格式,您可以使用java.text.MessageFormat
。 %n
是换行符转换(见下文)。
System.out.println(Integer.toHexString(255));
// ff
System.out.printf("%d is %<08X", 255);
// 255 is 000000FF
请注意,这也使用<
相对索引(见下文)。
System.out.printf("%+,010.2f%n", 1234.567);
System.out.printf("%+,010.2f%n", -66.6666);
// +01,234.57
// -000066.67
要获得更强大的浮点格式,请改用DecimalFormat
。
%n
用于特定于平台的行分隔符System.out.printf("%s,%n%s%n", "Hello", "World");
// Hello,
// World
%%
表示实际的%
- 符号System.out.printf("It's %s%% guaranteed!", 99.99);
// It's 99.99% guaranteed!
请注意,double
文字99.99
会自动退回到Double
,并在其上定义了使用toString()
的字符串转换。
n$
用于显式参数索引System.out.printf("%1$s! %1$s %2$s! %1$s %2$s %3$s!",
"Du", "hast", "mich"
);
// Du! Du hast! Du hast mich!
<
用于相对索引System.out.format("%s?! %<S?!?!?", "Who's your daddy");
// Who's your daddy?! WHO'S YOUR DADDY?!?!?
MessageFormat
示例答案 2 :(得分:21)
http://www.cplusplus.com/reference/clibrary/cstdio/printf/
相同的规则应适用于Java。
在您的情况下,它表示输出2位或更多位的整数值,如果数字小于或等于9,则第一位为零
答案 3 :(得分:0)
亚历山大的回答是指完整的文档......
问题中的简单示例只是用2位数字打印出这些值 - 必要时附加前导0。
答案 4 :(得分:0)
http://en.wikipedia.org/wiki/Printf#printf_format_placeholders
这篇文章是关于printf函数的类,有几种语言,从50年代到今天。
答案 5 :(得分:0)
%是您在格式字符串中放入的特殊字符,例如在C语言printf和scanf(和系列)中,基本上说“这是其他东西的占位符,而不是按字面打印/阅读。“
例如,printf的格式字符串中的
(%02d)
是整数变量的占位符,将以十进制(%02d)
打印并填充至少两位数,必要时带零。实际的整数由您在函数的参数中提供,例如:
printf("%02d",5);
会在屏幕上打印05
,(%01d)
也会有类似的效果
同样适用于Java和其他语言:)