C言語 可変個引数リストを書式付きでファイルに出力 - stdio.h - [ vfprintf ]

2008.10.17 Friday | by LRESULT


変個引数リストを書式付きでファイルに出力するには、vfprintf()を使います。

前回vsprintf() のファイルへの出力版というわけです。


vfprintf
書式 int vfprintf( FILE *fp, const char *format, va_list *arg )
機能 可変個引数リストを書式付きでファイルに出力
引数 FILE *fp : ファイル(ストリーム)ポインタ
const char *format : 書式文字列
va_list *arg : 可変個引数リスト
戻り値 成功すると、出力したバイト数を返し、
失敗すると、負値を返します。





サンプルコード
可変個引数リストの「a, 0.123, 10, 123, ABC」 の5つを、
vfprintf()を使用して「文字, 浮動小数点, 整数, 16進数, 文字列」
という形で、「test.txt」というファイルに書き出してみます。
#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;
  FILE *fp;
  char *fname = "test.txt";

  fp = fopen( fname, "w" );
  if( fp == NULL ){
    printf( "%sファイルが開けません¥n", fname );
    return;
  }

  /* 可変引数リスト初期化 */
  va_start( arg, num );

  /* 可変個の引数をファイルへ出力 */
  vfprintf( fp, "%c, %0.3f, %d, %#x, %s", arg );

  printf( "%sファイルへ出力しました¥n", fname );

  /* 可変引数リスト終了 */
  va_end( arg );

  fclose( fp );
}



結果
「test.txt」ファイルに、
a, 0.123, 10, 0x7b, ABC
と、いうように書き込まれていれば成功です。
va_list を使用していますので、stdarg.h をインクルードするのを忘れないようにして下さい。
また、ファイルへ書き出しますので、オープンモードは "w" を指定して下さい。

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


コメントする











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

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

トラックバック