cppreference.com > Standard C I/O > vprintf, vfprintf, and vsprintf
vprintf, vfprintf, and vsprintf
Syntax:
  #include <stdarg.h>
  #include <stdio.h>
  int vprintf( char *format, va_list arg_ptr );
  int vfprintf( FILE *stream, const char *format, va_list arg_ptr );
  int vsprintf( char *buffer, char *format, va_list arg_ptr );

These functions are very much like printf(), fprintf(), and sprintf(). The difference is that the argument list is a pointer to a list of arguments. va_list is defined in stdarg.h, and is also used by (Other Standard C Functions) va_arg(). For example:

   void error( char *fmt, ... ) {
     va_list args;
     va_start( args, fmt );
     fprintf( stderr, "Error: " );
     vfprintf( stderr, fmt, args );
     fprintf( stderr, "\n" );
     va_end( args );
     exit( 1 );
   }