C言語 可変個引数リストを書式付きで文字列に出力 - stdio.h - [ vsprintf ]
2008.10.16 Thursday | by LRESULT
可変個引数リストを書式付きで文字列に出力するには、vsprintf()を使います。
前回のvprintf() の文字列への出力版というわけです。
書式 | int vsprintf( char *s, const char *format, va_list *arg ) |
---|---|
機能 | 可変個引数リストを書式付で文字列に出力 |
引数 | char *s : 出力を格納する為のバッファ const char *format : 書式文字列 va_list arg : 可変個引数リスト |
戻り値 | 成功すると、出力バイト数を返し、 失敗すると、負値を返します。 |
可変個引数リストの「a, 0.123, 10, 123, ABC」 の5つを、 vsprintf()を使用して「文字, 浮動小数点, 整数, 16進数, 文字列」 という形で、一旦、文字列に格納してから画面に表示してみます。 |
---|
#include <stdio.h> #include <stdarg.h> void func( int num, ... ); int main(void) { func( 5, 'a', 0.123, 10, 123, "ABC" ); return 0; } void func( int num, ... ) { va_list arg; char s[100]; /* 可変引数リスト初期化 */ va_start( arg, num ); /* 可変個の引数を取り出し */ vsprintf( s, "%c, %0.3f, %d, %#x, %s", arg ); puts( s ); /* 文字列を画面へ出力 */ /* 可変引数リスト終了 */ va_end( arg ); } |
a, 0.123, 10, 0x7b, ABC |
---|
という結果になります。 va_list を使用していますので、stdarg.h をインクルードするのを忘れないようにして下さい。 文字列を引数に取る以外は、vprintf()と同じですね。 |