C言語 可変個引数リストを書式付きで画面に出力 - stdio.h - [ vprintf ]

2008.10.15 Wednesday | by LRESULT


変個引数リストを書式付きで画面に出力するには、vprintf()を使います。

要するに、printf()の可変個引数リスト版です。


vprintf
書式 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つずつ取得するよりも簡単かもしれませんね。

カテゴリ:C言語 stdio.h | 22:55 | comments(0) | trackbacks(0) | -


コメントする











この記事のトラックバックURL

http://simd.jugem.jp/trackback/74

トラックバック