フォーマット指定したテキストをストリームへ出力します。
備考 | CS+が提供するデバッグ機能では,サポートされていません。 |
[所属]
標準ライブラリ
[指定形式]
#include <stdio.h>
int fprintf(FILE *stream, const char *format[, arg, ...]);
[戻り値]
出力された文字数を返します。
[詳細説明]
それぞれのargにformatの指す文字列で指定された書式を適用し,それにより出力された書式付きデータをstreamに出力します。streamに指定できるのは,標準入出力のstdoutとstderrだけです。formatの記述方法はsprintfと同様です。sprintfと違って,最後にnull文字(\0)は出力されません。
[注意事項]
stdoutにはI/O アドレスなど1 メモリ・アドレスを割り当てます。デバッガとの連携でstdoutを使用するには,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);
}
|