プログラミング言語 C の新機能 Part XXXV: stdio.h: snprintf
(1999/12/20 [月])
stdio.h ヘッダに新たな関数 snprintf が追加されました。
今までの sprintf では出力文字数を指定する方法が無かったので、はみ出さないかどうかどきどきして使う、または直前でオーバーフローしないように気を配ったりする必要がありました。しかし、今回の snprintf を使えばそのような心配もなくなり、安心して書式化文字列を使用できます。
[追記:12/27]
stdio.h ヘッダに新たな関数 vsnprintf が追加されました。
名前 | int snprintf(char * restrict s, size_t n, const char * restrict format, ...); |
---|---|
ヘッダ | stdio.h |
引数 | s:出力先バッファ n:出力先バッファの文字数 format:書式 ...:書式で指定した値 |
戻値 | 出力した文字数。終端のヌル文字は含まない。エラー時は負の値。 |
解説 | sprintf の出力文字数指定版。format に従い文字を書式化して s に最大 n - 1 文字出力する。n - 1 文字以上出力された場合は破棄される。s の終端にはヌル文字が付加される。 参考:wchar_t を受け付ける関数 swprintf があり、これはバッファ文字数を指定できる仕様になっている[update:12/27]。 |
今までの sprintf では出力文字数を指定する方法が無かったので、はみ出さないかどうかどきどきして使う、または直前でオーバーフローしないように気を配ったりする必要がありました。しかし、今回の snprintf を使えばそのような心配もなくなり、安心して書式化文字列を使用できます。
[追記:12/27]
stdio.h ヘッダに新たな関数 vsnprintf が追加されました。
名前 | int vsnprintf(char * restrict s, size_t n, const char * restrict format, va_list arg); |
---|---|
ヘッダ | stdio.h |
引数 | s:出力先バッファ n:出力先バッファの文字数 format:書式 arg:va_start で初期化した値 |
戻値 | 出力した文字数。終端のヌル文字は含まない。エラー時は負の値。 |
解説 | vsprintf の 出力文字数対応版。format に従い文字を書式化して s に最大 n - 1 文字出力する。n - 1 文字以上出力された場合は破棄される。s の終端にはヌル文字が付加される。 参考:wchar_t を受け付ける関数 vswprintf があり、これはバッファ文字数を指定できる仕様になっている。 |
by seclan