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);
}
#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);
}