私は次のようなコード行を見ています:
sprintf(buffer,"%02d:%02d:%02d",hour,minute,second);
シンボリック文字列は、時間、分などごとに表示される数字の数を指していると思います-またはそのような何か、私は完全に確実ではありません。
通常、この種のことは理解できますが、Googleで「%02d%01d」を検索する有用な参照を見つけることができませんでした。私にこれについていくつかの光を当てることができる人はいますか?
http://www.cplusplus.com/reference/clibrary/cstdio/printf/
同じ規則がJavaにも適用されるはずです。
あなたの場合、それは2桁以上の整数値の出力を意味し、9以下の場合は最初はゼロです
_%02d
_をグーグルで検索する代わりに、sprintf()
関数を検索する必要があります。
_%02d
_は、「整数を2桁でフォーマットし、ゼロで左詰めする」ことを意味します。したがって、
フォーマットデータ結果 %02d 1 01 %02d 11 11
それらはString
をフォーマットしています。 Java特定の構文は _Java.util.Formatter
_ で指定されています。
一般的な構文は次のとおりです。
_ %[argument_index$][flags][width][.precision]conversion
_
_%02d
_は、ゼロパディング(_0
_フラグ)でフォーマットされ、幅_2
_の10進整数変換d
を実行します。したがって、値が_7
_であるint
引数は、String
として_"07"
_にフォーマットされます。
このフォーマット文字列は、たとえば _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
_
%%
_は実際の_%
_- sign_System.out.printf("It's %s%% guaranteed!", 99.99);
// It's 99.99% guaranteed!
_
double
リテラル_99.99
_は、toString()
を使用した文字列変換が定義されているDouble
に自動ボックス化されることに注意してください。
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?!?!?
_
アレクサンダーからの答えは、完全なドキュメントを指します...
質問の簡単な例では、これらの値を2桁で出力します-必要に応じて先頭に0を追加します。
http://en.wikipedia.org/wiki/Printf#printf_format_placeholders
この記事は、50年代から今日までのいくつかの言語でのprintf関数のclassについてです。
%は、たとえばC言語のprintfおよびscanf(およびファミリ)のフォーマット文字列に入れる特殊文字で、基本的にと言います。これは何かのプレースホルダーですそれ以外の場合は、文字どおりに印刷/読み取りしないでください。 "
たとえば、printfの書式文字列の_
(%02d)
_は、10進数の_(%02d)
_で印刷され、必要に応じてゼロで少なくとも2桁に埋め込まれる整数変数のプレースホルダーです。実際の整数は、関数への引数で提供されます。
printf("%02d",5);
は画面に_05
_を出力します。_(%01d)
_も同様に動作します
Javaおよび他の言語も同じです:)