C言語 可変個引数リストを書式付きで文字列に出力 - stdio.h - [ vsprintf ]

2008.10.16 Thursday | by LRESULT


変個引数リストを書式付きで文字列に出力するには、vsprintf()を使います。

前回vprintf() の文字列への出力版というわけです。


vsprintf
書式 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()と同じですね。

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


コメントする











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

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

トラックバック