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)