C言語編 標準ライブラリのリファレンス vfprintf

先頭へ戻る

vfprintf関数

概要 任意のストリームへ、変換指定に沿って変換された文字列を出力する。
ヘッダ stdio.h
形式 int vfprintf(FILE* stream, const char* format, va_list args);
引数 stream 出力先のストリーム。
format 変換指定を含んだ、あるいは含まないプレーンな文字列。
args format に含まれている変換指定子に対応した、可変個引数リスト。
戻り値 正常に終了した場合は、出力した文字数が返される。エラー発生時は負数が返される。
詳細 仮引数が ... から va_list に変わったことを除き、fprintf関数と同等である。
変換指定の詳細については、printf関数を参照。
注意 第3引数に渡す va_list型のオブジェクトは、事前に va_start による初期化が必要である。
va_list に、必要な個数の引数が含まれていない場合の動作は未定義。余分に存在している場合には、評価は行われるが、vfprintf関数としては無視する。
使用例
#include <stdio.h>
#include <stdarg.h>
#include <stdlib.h>

static void warning(FILE* fp, const char* str, ...);

int main(void)
{
    FILE* fp;
    int value = 100;

    fp = fopen( "test.txt", "w" );
    if( fp == NULL ){
        exit( EXIT_FAILURE );
    }

    if( value != 0 ){
        warning( fp, "value: %d\n", value );
    }

    if( fclose( fp ) == EOF ){
        fputs( "ファイルクローズに失敗しました。\n", stderr );
        exit( EXIT_FAILURE );
    }

    return 0;
}

void warning(FILE* fp, const char* str, ...)
{
    va_list args;

    va_start( args, str );

    fprintf( fp, "[WARNING] " );
    vfprintf( fp, str, args );

    va_end( args );
}

実行結果 (test.txt):

[WARNING] value: 100
関連 標準出力への出力に特化した vprintf関数がある。変換結果を文字の配列に格納するには vsprintf関数を使う。
va_list の代わりに、... を用いたバージョンとして、fprintf関数がある。
ワイド文字版の vfwprintf関数がある。
解説章 第52章


参考リンク

更新履歴

'2018/4/22 解説中で C95 を(C89 に対して)特別扱いしないように修正。そもそもC言語編は C95ベースなので、余計な説明は省く。

'2018/4/19 全体的に文章を見直し修正。

'2018/2/1 C言語編全体で表記を統一するため、「フォーマット指定」を「変換指定」に改めた。

'2018/1/22 新規作成。





標準ライブラリのリファレンス(名前順)のトップページへ

標準ライブラリのリファレンス(ヘッダ別)のトップページへ

C言語編のトップページへ

Programming Place Plus のトップページへ


このエントリーをはてなブックマークに追加
rss1.0 取得ボタン RSS