VPRINTF(3S) VPRINTF(3S) НАЗВАНИЕ vprintf, vfprintf, vsprintf - форматный вывод списка аргументов, заданного по правилам varargs СИНТАКСИС |#include |#include | |int vprintf (format, ap) |char *format; |va_list ap; | |int vfprintf (stream, format, ap) |FILE *stream; |char *format; |va_list ap; | |int vsprintf (s, format, ap) |char *s, *format; |va_list ap; ОПИСАНИЕ Функции vprintf, vfprintf, vsprintf эквивалентны функ- циям printf, fprintf, sprintf соответственно, но вместо явного списка аргументов переменной длины им передается список, заданный по правилам varargs(5). ПРИМЕР В следующем примере показано, как можно использовать vfprintf для вывода диагностики. |#include |#include | ... |/* | Вызов подпрограммы диагностики должен выглядеть так: | error(имя_функции, формат, арг1, арг2 ...); |*/ |/*VARARGS*/ |void error (va_alist) |/* | Отметим, что аргументы имя_функции и формат не могут | быть продекларированы отдельно в силу определения | varargs. |*/ |va_dcl |{ | va_list args; | char *fmt; | va_start(args) | /* Печать имени функции, вызвавшей ошибку */ | (void) fprintf (stderr, "ERROR in %s: ", | va_arg(args,char *)); | fmt = va_arg(args, char *); | /* Печать оставшейся части сообщения */ | (void) vfprintf (stderr, fmt, args); | va_end(args); | (void) abort (); |} СМ. ТАКЖЕ printf(3S), varargs(5).