C言語 可変個引数リストを書式付きで画面に出力 - stdio.h - [ vprintf ]
2008.10.15 Wednesday | by LRESULT
可変個引数リストを書式付きで画面に出力するには、vprintf()を使います。
要するに、printf()の可変個引数リスト版です。
書式 | int vprintf( const char *fortmat, va_list *arg ) |
---|---|
機能 | 可変個引数リストを書式付きで画面に出力 |
引数 | const char *format : 書式文字列 va_list *arg : 可変個引数リスト |
戻り値 | 成功すると、出力バイト数を返し、 失敗すると、負値を返します。 |
※ 可変個引数リストについては、以前に紹介した、
C言語 可変引数リストの処理 - stdarg.h - [ va_list, va_start, va_end, va_arg ]
を参考にして下さい。
可変個引数リストの「a, 0.123, 10, 123, ABC」 の5つを、 vprintf()を使用して「文字, 浮動小数点, 整数, 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; /* 可変引数リスト初期化 */ va_start( arg, num ); /* 可変個の引数を取り出し */ vprintf( "%c, %0.3f, %d, %#x, %s", arg ); /* 可変引数リスト終了 */ va_end( arg ); } |
a, 0.123, 10, 0x7b, ABC |
---|
と、表示されます。 va_list を使用していますので、 stdarg.h をインクルードするのを忘れないようにして下さい。 こうして見ると、 va_arg()を使って、1つずつ取得するよりも簡単かもしれませんね。 |