Программирование на C и C++

Онлайн справочник программиста на C и C++

vprintf, vfprintf, vsprintf

int vprintf(const char *format, va_list arg_ptr)

int vfprintf(FILE *stream, const char *format, va_list arg_ptr)

int vsprintf(char *buf, const char *format, va_list arg_ptr)

Прототип: 
Описание: 

Требуется наличие файла stdarg.h.

Функции vprintf(), vfprintf() и vsprintf() функционально эквивалентны функциям printf(), fprintf() и sprintf() соответственно. Различие состоит лишь в том, что список аргументов заменен на указа­тель на список аргументов. Этот указатель должен иметь тип va_list, определенный в stdarg.h.

Пример: 
Следующий фрагмент программы показывает, как организуется вызов vprintf(). Обращение к va_start() создает указатель на аргумент изменяемой длины, указывающий на начало списка ар­гументов. Этот указатель должен использоваться при вызове vprintf(). Обращение к va_end() очи­щает указатель на аргумент изменяемой длины.
#include <stdio.h>
#include <stdarg.h>
void print_message(char *, ...);
int main(void)
{
print_message("Cannot open file %s","test");
return 0;
}
void print_message(char *format, ...)
{
va_list ptr; /* получение ptr */
/* инициализация ptr так, чтобы он указывал на первый аргумент после форматной строки
*/

va_start(ptr, format);
/* вывод сообщения */
vprintf(format, ptr);
va_end(ptr);
}