vprintf(3C)




NAME

     vprintf, vfprintf, vsprintf,  vsnprintf  -  print  formatted
     output of a variable argument list


SYNOPSIS

     #include <stdio.h>
     #include <stdarg.h>

     int vprintf(const char *format, va_list ap);

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

     int vsprintf(char *s, const char *format, va_list ap);

     int vsnprintf(char *s, size_t n, const char *format, va_list
     ap);


DESCRIPTION

     The vprintf(), vfprintf(), vsprintf() and vsnprintf()  func-
     tions  are  the  same as printf(), fprintf(), sprintf(), and
     snprintf(),  respectively,  except  that  instead  of  being
     called  with a variable number of arguments, they are called
     with an argument list as defined in the  <stdarg.h>  header.
     See printf(3C) and stdarg(3HEAD).

     The <stdarg.h> header defines the type va_list and a set  of
     macros  for  advancing  through  a  list  of arguments whose
     number and types may vary. The argument  ap  to  the  vprint
     family  of  functions  is  of type va_list. This argument is
     used with the  <stdarg.h>  header  file  macros  va_start(),
     va_arg(),  and  va_end()  (see stdarg(3HEAD)). The  EXAMPLES
     section  below  demonstrates  the  use  of  va_start()   and
     va_end() with  vprintf().

     The macro va_alist() is used as  the  parameter  list  in  a
     function  definition,  as in the function called  error() in
     the example below.  The macro va_start(ap, parmN), where  ap
     is  of  type  va_list  and  parmN is the rightmost parameter
     (just before ...), must be  called  before  any  attempt  to
     traverse   and   access   unnamed  arguments  is  made.  The
     va_end(ap) macro must be invoked when all desired  arguments
     have been accessed. The argument list in ap can be traversed
     again if va_start() is called again after va_end().  In  the
     example  below, the error() arguments (arg1,  arg2, ...) are
     passed to vfprintf() in the argument ap.


RETURN VALUES

     The vprintf(), vfprintf(), and vsprintf()  functions  return
     the  number  of  characters transmitted (not including \0 in
     the case of vsprintf()). The  vsnprintf()  function  returns
     the  number  of characters formatted, that is, the number of
     characters that would have been written to the buffer if  it
     were large enough. Each function returns a negative value if
     an output error was encountered.


ERRORS

     The vprintf() and vfprintf() functions will fail  if  either
     the stream is unbuffered or the stream's buffer needed to be
     flushed and:

     EFBIG The file is a regular file and an attempt was made  to
           write at or beyond the offset maximum.


EXAMPLES

     Example 1: Using vprintf() to write an error routine.

     The following demonstrates how vfprintf() could be  used  to
     write an error routine:

     #include <stdio.h>
     #include <stdarg.h>
     . . .
     /*
      *   error should be called like
      *         error(function_name, format, arg1, ...);
      */
     void error(char *function_name, char *format, ...)
     {
             va_list ap;
             va_start(ap, format);
             /* print out name of function causing error */
             (void) fprintf(stderr, "ERR in %s: ", function_name);
             /* print out remainder of message */
             (void) vfprintf(stderr, format, ap);
             va_end(ap);
             (void) abort;
     }


ATTRIBUTES

     See attributes(5) for descriptions of the  following  attri-
     butes:

     ____________________________________________________________
    |       ATTRIBUTE TYPE        |       ATTRIBUTE VALUE       |
    |_____________________________|_____________________________|
    | MT-Level                    | MT-Safe                     |
    |_____________________________|_____________________________|


SEE ALSO

     printf(3C), attributes(5), stdarg(3HEAD)


Man(1) output converted with man2html