duk_push_sprintf()
1.0.0 string stack
プロトタイプ
c
const char *duk_push_sprintf(duk_context *ctx, const char *fmt, ...);
スタック
| ... | -> | ... | str |
要約
sprintf()のように(ただし安全に)文字列をフォーマットし、その結果をバリュースタックにプッシュします。結果の文字列へのNULLでないポインタを返します。
fmt が NULL の場合、空文字列がスタックにプッシュされ、空文字列への非 NULL ポインタが返される (この動作は、少なくとも Linux では、NULL フォーマット文字列に対する sprintf() の動作に類似している)。返されたポインタは再参照可能で、NULターミネータ文字が保証されます。
sprintf()とは異なり、文字列のフォーマットは結果の長さに関して安全です。具体的には、この実装は、一時的にフォーマットされた値に対して十分な大きさのバッファが見つかるまで、一時的なバッファのサイズを大きくしてみます。
いくつかの書式指定子にはプラットフォーム特有の動作があるかもしれません。例えば、引数がNULLの場合の%sの動作は公式には未定義であり、実際の動作はプラットフォームによって異なり、メモリ的に安全でない可能性さえあります。
例
c
duk_push_sprintf(ctx, "meaning of life: %d, name: %s", 42, "Zaphod");