vsnprintfに可変長引数リストの他に書式も変数で与えたいのですが、第2引数のバッファに書き込まれるバイト数を可変長引数リストと書式から
1.vsnprintfを実行する前に
2.最大値などではなく正確に
3.バッファオーバーランなどのリスクなく安全な関数・方法で
4.一から書式を解釈する処理を書くことなく
取得できるような都合の良い方法はないでしょうか?
vsnprintf を実行すれば必要な大きさが分かりますのに、なぜ 1 がダメなのでしょうか。
開発環境はなんでしょうか MSVC ですと _vscprintf というそのものズバリの関数があります。
参考 : https://docs.microsoft.com/ja-jp/cpp/c-runtime-library/reference/vscprintf-vscprintf-l-vscwprintf-vscwprintf-l?view=msvc-160
また、GCC には vasprintf と言う関数があり、予めバッファを用意しなくても、必要な領域を確保してくれます。
参考 : https://linuxjm.osdn.jp/html/LDP_man-pages/man3/asprintf.3.html
ありがとうございます。
ただ、int32_t さんに回答したような問題を確認しました。
回避方法ご存じでしょうか?
Bullさん、ありがとうございます。
今現在はVisual Studio2019で実行しています。
ただこれは暫定で最終的にはどこかでソースファイルを取得して、H8マイコンに移植するのが目的です。
_vscprintfのソースが容易に見つけられるようなら検討したいと思います。
回答1件
あなたの回答
tips
プレビュー