電話をかけても安全ですかsnprintf(NULL, 0, "…", …)
?私が尋ねる他の方法はありますか?snprintf
サイズが0の場合、NUL文字は記録されますか?
の例Linuxのマニュアルページマニュアルページprintf(3)はこれを行う例を提供しますが、残りのテキストPOSIX プログラママニュアル、関連情報が見つかりません。
答え1
POSIX プログラママニュアル具体的に定義:
snprintf() 関数は sprintf() と同じでなければなりませんが、s が参照するバッファのサイズを示す n パラメータが追加されます。 n が 0 の場合は何も記録されず、s はヌルポインタになります。それ以外の場合、n-1番目以降の出力バイトは配列に書き込まれるのではなく削除され、実際に配列に書き込まれたバイトの末尾にnullバイトが書き込まれます。
(強調は私のもの)
この呼び出しを行うことは完全に安全でなければなりません。