4

私は偶然見つけました:

sprintf(buffer, "%!ld ", date);

ldが長整数用であることは理解していますが、?の目的は何!ですか?%ld私はこれに関する参照を見つけることができません、そして出力は私にとって古典に似ているようです

編集:どうやら私のシステムでは、変数に文字列を追加します+to_date('01/01/1904','DD/MM/YYYY'))...これは実際にデータベースのクエリに使用されるため、日付を実際のOracle日付に変換します(私は思います)。これが特別なsprintfであるかどうか、そしてそれがどこから来たのかを見てみましょう

4

3 に答える 3

3

私の知る限り、これはprintfには有効ではないか、単に無視されます。私が知っている唯一の状況では、%!WindowsでFormatMessageのようなものを使用します。http://msdn.microsoft.com/en-us/library/aa908810.aspxを参照してください。

于 2012-05-16T12:58:16.547 に答える
2

無効なフォーマット文字列です。

%ほとんどのprintf実装は、無効なフォーマット文字列を取得するときに、を特殊文字ではなくリテラルとして扱うと思います。だからそれは印刷されます%!ld

それがあなたのよう%ldに機能する場合、いくつかのコメントが言うように、おそらくそれはあなたのプラットフォームの非標準的な拡張です。

于 2012-05-16T12:55:56.863 に答える
0

I think it will print %!ld as this is not a valid format specifier in C.

于 2012-05-16T13:06:55.277 に答える