VPRINTF(3S)
НАЗВАНИЕ
vprintf, vfprintf, vsprintf - форматный вывод списка
аргументов, заданного по правилам varargs
СИНТАКСИС
#include <stdio.h>
#include <varargs.h>
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 <stdio.h>
#include <varargs.h>
...
/*
Вызов подпрограммы диагностики должен выглядеть так:
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).