16.5 怎樣寫類似 printf() 的函數, 再把參數轉傳給 printf() 去 完成大部分工作?

用 vprintf(), vfprintf() 或 vsprintf()。

下面是一個 error() 函數, 它列印一個出錯信息, 在信息前加入字符串  ``error: " 和在信息後加入換行符:

        #include <stdio.h>
        #include <stdarg.h>

        void error(const char *fmt, ...)
        {
	    va_list argp;
	    fprintf(stderr, "error: ");
	    va_start(argp, fmt);
	    vfprintf(stderr, fmt, argp);
	    va_end(argp);
	    fprintf(stderr, "\n");
        }

參考資料: [K&R2, Sec. 8.3 p. 174, Sec. B1.2 p. 245]; [ISO, Secs. 7.9.6.7,7.9.6.8,7.9.6.9]; [H&S, Sec. 15.12 pp. 379-80]; [PCS, Sec. 11 pp. 186-7]。

翻譯朱群英、孫雲, LaTeX2HTML 編譯 朱群英 (2005-06-23)