Print this page
12953 convert printf(3c) and vprintf(3c) to mdoc
Change-Id: Iffbfe29bbd443e1a7ad0fc33fd7a7851428a3dc8
   1 VPRINTF(3C)              Standard C Library Functions              VPRINTF(3C)
   2 
   3 
   4 
   5 NAME
   6        vprintf, vfprintf, vsprintf, vsnprintf, vasprintf - print formatted
   7        output of a variable argument list
   8 



   9 SYNOPSIS
  10        #include <stdio.h>
  11        #include <stdarg.h>

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

  14 


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

  17 


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

  20 
  21 
  22        int vsnprintf(char *s, size_t n, const char *format, va_list ap);
  23 
  24 
  25        int vasprintf(char **ret, const char *format, va_list ap);
  26 
  27 
  28 DESCRIPTION
  29        The vprintf(), vfprintf(), vsprintf(), vsnprintf(), and vasprintf()
  30        functions are the same as printf(), fprintf(), sprintf(), snprintf(),
  31        and asprintf(), respectively, except that instead of being called with
  32        a variable number of arguments, they are called with an argument list
  33        as defined in the <stdarg.h> header. See   printf(3C).
  34 
  35 
  36        The <stdarg.h> header defines the type va_list and a set   of macros for
  37        advancing through a list of arguments whose number and types may vary.
  38        The argument ap to the vprint family of functions is of type va_list.
  39        This argument is used with the <stdarg.h> header   file macros
  40        va_start(), va_arg(), and va_end() (see stdarg(3EXT)). The EXAMPLES
  41        section below demonstrates the use of va_start() and va_end() with
  42        vprintf().
  43 
  44 
  45        The macro va_alist() is used as the parameter list in a function
  46        definition, as in the function called error() in the example below. The
  47        macro va_start(ap, name), where ap is of type va_list and name is the
  48        rightmost parameter (just before ...), must be called before any
  49        attempt to traverse and access unnamed arguments is made. The
  50        va_end(ap) macro must be invoked when all desired arguments have been
  51        accessed. The argument list in ap can be traversed again if va_start()
  52        is called again after va_end(). In the example below, the error()
  53        arguments (arg1, arg2, ...) are passed to vfprintf() in the argument
  54        ap.
  55 
  56 RETURN VALUES
  57        Refer to printf(3C).
  58 
  59 ERRORS
  60        The vprintf() and vfprintf() functions will fail if either the stream
  61        is unbuffered or the stream's buffer needed to be flushed and:
  62 
  63        EFBIG
  64                 The file is a regular file and an attempt was made to write at
  65                 or beyond the offset maximum.
  66 
  67 
  68 EXAMPLES
  69        Example 1 Using vprintf() to write an error routine.
  70 


  71 
  72        The following demonstrates how vfprintf() could be used to write an
  73        error routine:
  74 
  75 
  76          #include <stdio.h>
  77          #include <stdarg.h>
  78          ...

  79          /*
  80           *   error should be called like
  81           *         error(function_name, format, arg1, ...);
  82           */
  83          void error(char *function_name, char *format, ...)

  84          {
  85                  va_list ap;

  86                  va_start(ap, format);
  87                  /* print out name of function causing error */

  88                  (void) fprintf(stderr, "ERR in %s: ", function_name);
  89                  /* print out remainder of message */

  90                  (void) vfprintf(stderr, format, ap);

  91                  va_end(ap);

  92                  (void) abort();
  93          }
  94 



  95 
  96 ATTRIBUTES
  97        See attributes(5) for descriptions of the following attributes:
  98 


  99 



 100 
 101 
 102        +--------------------+-----------------+
 103        |  ATTRIBUTE TYPE    | ATTRIBUTE VALUE |
 104        +--------------------+-----------------+
 105        |Interface Stability | Committed       |
 106        +--------------------+-----------------+
 107        |MT-Level            | See below.      |
 108        +--------------------+-----------------+
 109        |Standard            | See below.      |
 110        +--------------------+-----------------+
 111 
 112 
 113        All of these functions can be used safely in multithreaded
 114        applications, as long as setlocale(3C) is not being called to change
 115        the locale.
 116 
 117 
 118        See standards(5) for the standards conformance of vprintf(),
 119        vfprintf(), vsprintf(), and vsnprintf(). The vasprintf() function is
 120        modeled on the one that appears in the FreeBSD, NetBSD, and GNU C
 121        libraries.
 122 
 123 SEE ALSO
 124        printf(3C), attributes(5), stdarg(3EXT), attributes(5), standards(5)
 125 





 126 NOTES
 127        The vsnprintf() return value when n = 0 was changed in the Solaris 10
 128        release. The change was based on the SUSv3 specification. The previous
 129        behavior was based on the initial SUSv2 specification, where
 130        vsnprintf() when n = 0 returns an unspecified value less than 1.
 131 
 132 
 133 
 134                                 January 7, 2009                    VPRINTF(3C)
   1 VPRINTF(3C)              Standard C Library Functions              VPRINTF(3C)
   2 


   3 NAME
   4      vprintf, vfprintf, vsprintf, vsnprintf, vasprintf - print formatted
   5      output of a variable argument list
   6 
   7 LIBRARY
   8      Standard C Library (libc, -lc)
   9 
  10 SYNOPSIS

  11      #include <stdarg.h>
  12      #include <stdio.h>
  13 
  14      int
  15      vprintf(const char *format, va_list);
  16 
  17      int
  18      vfprintf(FILE *stream, const char *format, va_list ap);
  19 
  20      int
  21      vsprintf(char *s, const char *format, va_list ap);
  22 
  23      int
  24      vsnprintf(char *s, size_t n, const char *format, va_list ap);
  25 
  26      int
  27      vasprintf(char **ret, const char *format, va_list ap);
  28 







  29 DESCRIPTION
  30      The vprintf(), vfprintf(), vsprintf(), vsnprintf(), and vasprintf()
  31      functions are the same as printf(), fprintf(), sprintf(), snprintf(), and
  32      asprintf(), respectively, except that instead of being called with a
  33      variable number of arguments, they are called with an argument list as
  34      defined in the <stdarg.h> header.    See printf(3C).
  35 

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

  42 

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

  52 
  53 RETURN VALUES
  54      Refer to printf(3C).
  55 









  56 EXAMPLES
  57      Example 1 Using vprintf() to write an error routine.
  58 
  59      The following demonstrates how vfprintf() could be used to write an error
  60      routine:
  61 





  62      #include <stdarg.h>
  63      #include <stdio.h>
  64 
  65      /*
  66       * error should be called like
  67       *      error(function_name, format, arg1, ...);
  68       */
  69      void
  70      error(char *function_name, char *format, ...)
  71      {
  72              va_list ap;
  73 
  74              va_start(ap, format);
  75 
  76              /* Print out name of function causing error */
  77              (void) fprintf(stderr, "ERR in %s: ", function_name);
  78 
  79              /* Print out remainder of message */
  80              (void) vfprintf(stderr, format, ap);
  81 
  82              va_end(ap);
  83 
  84              (void) abort();
  85      }
  86 
  87 ERRORS
  88      The vfprintf() function will fail if either the stream is unbuffered or
  89      the stream's buffer needed to be flushed and:
  90 
  91      EFBIG              The file is a regular file and an attempt was made to
  92                         write at or beyond the offset maximum.
  93 
  94 INTERFACE STABILITY
  95      Committed
  96 
  97 MT-LEVEL
  98      All of these functions can be used safely in multithreaded applications,
  99      as long as setlocale(3C) is not being called to change the locale.
 100 






















 101 SEE ALSO
 102      printf(3C), stdarg(3EXT), attributes(5), standards(5)
 103 
 104 STANDARDS
 105      See standards(5) for the standards conformance of vprintf(), vfprintf(),
 106      vsprintf(), and vsnprintf().  The vasprintf() function is modeled on the
 107      one that appears in the FreeBSD, NetBSD, and GNU C libraries.
 108 
 109 NOTES
 110      The vsnprintf() return value when n is 0 was changed in the Solaris 10
 111      release.  The change was based on the SUSv3 specification.  The previous
 112      behavior was based on the initial SUSv2 specification, where vsnprintf()
 113      when n is 0 returns an unspecified value less than 1.
 114 
 115 illumos                          July 10, 2020                         illumos