vprintf, vfprintf, and vsprintf


    #include <cstdarg>
    #include <cstdio>
    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 cstdarg, and is also used by 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 );