"> VPRINTF(3S)

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).