フォーマット指定したテキストをストリームへ書き込みます。
備考  | CS+が提供するデバッグ機能では,サポートされていません。  | 
 
[所属]
標準ライブラリ
[指定形式]
#include <stdio.h>
int vfprintf(FILE *stream, const char *format, va_list arg);
[戻り値]
出力された文字数を返します。
[詳細説明]
argの指す引数列にformatの指す文字列で指定された書式を適用し,それにより出力された書式付きデータをstreamに出力します。streamに指定できるのは,標準入出力のstdoutとstderrだけです。formatの記述方法はsprintfと同様です。本関数は,可変個数実引数並びをargで置き換えたfprintfと等価です。本関数の呼び出しの前に,va_startでargを初期化しておく必要があります。
[注意事項]
streamにstdout(標準出力), stderr(標準エラー)を指定します。ストリームの入出力先はI/Oアドレスなど1メモリ・アドレスを割り当てます。デバッガとの連携でこれらのストリームを使用するには,stdio.hファイルで定義されている,ストリーム構造体の初期値設定が必要です。関数を呼び出す前に,初期値設定を行ってください。
 
【stdio.hにおけるストリーム構造体の定義】
typedef struct {
        int             mode;           /*with error descriptions*/ 
        unsigend        handle; 
        int             unget_c; 
} FILE; 
typedef int     fpos_t; 
  
extern  FILE*   _REL_stdin(); 
extern  FILE*   _REL_stdout(); 
extern  FILE*   _REL_stderr(); 
#define stdin   (_REL_stdin()) 
#define stdout  (_REL_stdout()) 
#define stderr  (_REL_stderr()) 
 | 
 
構造体の第一メンバmodeは,入出力状態を示します。ACCSD_OUT/ACCSD_INとして内部定義されています。第三メンバunget_cは,押し戻し文字(stdinのみ)を示し,-1として内部定義されています。
-1の場合,押し戻し文字“なし”を表します。第二メンバhandleは,入出力I/Oアドレスを示します。handleには,使用するデバッガで決められている値を設定してください。
 
【入出力I/Oアドレス設定例】
stdout->handle = 0xfffff000; 
stderr->handle = 0x00fff000; 
stdin->handle  = 0xfffff002; 
 | 
 
[使用例]
#include    <stdio.h> 
void func(int val) {
    fprintf(stdout, "%-10.5x\n", val); 
} 
/*汎用のエラー報告ルーチンにおける使用例*/ 
void error(char *function_name, char *format, ...) {
    va_list arg; 
    va_start(arg, format); 
    fprintf(stderr, "ERROR in %s:", function_name); /*エラーが発生した関数名を出力*/ 
    vfprintf(stderr, format, arg);                  /*残りのメッセージを出力*/ 
    va_end(arg); 
} 
 |