Cランタイムライブラリにsprintf()があります。同様の機能を持つwsprintf()がUSER32.dllにもあります。実はsprintf()はntdll.dllにもあります。
これらの関係を整理すると
宣言 | DLL | TCHAR.Hのルーチン | ANSI版 | Unicode版 |
---|---|---|---|---|
tchar.h | MSVCRT90.dll | _stprintf() | sprintf() | swprintf() |
windows.h | USER32.dll | wsprintf() | wsprintfA() | wsprintfW() |
- | ntdll.dll | - | sprintf() | swprintf() |
ちなみに注意点がいくつか。
swprintf()の第2引数はバッファサイズで書式指定文字列は第3引数にずれています。他のものは第2引数が書式指定文字列です。代わりに他のものと互換のある_swprintf()も第2引数が書式指定文字列になっています。
wsprintf()は指定できる書式に制限があります。例えば浮動小数(%f)がサポートされていません。
ntdll.dllに含まれるsprintf()は使用方法が公開されてなく、サポートされている機能も公開されていません。ただし、全てのプロセスにロードされるDLLなので何かの役に立つかも。
0 件のコメント:
コメントを投稿