Skip to content

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");