
608
18
章 標準ライブラリ関数
vsnprintf()
は引数
n
が十分大きければ文字列バッファに書いた文字数を終端文字を除いて
返す。
■
例
// write_log
は
FILE
ポインタ
fp_log
に結び付いたログファイルに
1
行追加する。
//
書式指定文字列とオプション引数は
printf()
と同じ。
static FILE* fp_log = NULL;
static void write_log(const char* function_name, unsigned int line_num,
const char* format_str, ...)
{
if (fp_log == NULL)
{
return;
}
time_t timestamp = time(NULL);
va_list argptr;
// argptr
をオプション引数の先頭に設定
va_start(argptr, format_str);
//
まずタイムスタンプ、関数名、行番号を表示
fprintf(fp_log, "%.8s %s (line %u): ",
ctime(×tamp)+11, function_name, line_num);
//
次に残りのメッセージを表示
vfprintf(fp_log, format_str, argptr);
va_end(argptr);
}
static void myFunc(const int param)
{
write_log(__func__, ...