C言語 可変個引数リストを書式付きでファイルに出力 - stdio.h - [ vfprintf ]
2008.10.17 Friday | by LRESULT
可変個引数リストを書式付きでファイルに出力するには、vfprintf()を使います。
前回のvsprintf() のファイルへの出力版というわけです。
書式 | 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" を指定して下さい。 |