seclan のほえほえルーム

| |

・プログラミング言語 C の新機能 Part XXXV: stdio.h: snprintf (1999/12/20 [])
 stdio.h ヘッダに新たな関数 snprintf が追加されました。

snprintf
名前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 が追加されました。

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


| |

 

配信

6.36 msec