vprintf(3c) 맨 페이지 - 윈디하나의 솔라나라

개요

섹션
맨 페이지 이름
검색(S)

vprintf(3c)

Standard C Library Functions                                       vprintf(3C)



NAME
       vprintf, vfprintf, vsprintf, vdprintf, vsnprintf, vasprintf, vprintf_s,
       vfprintf_s, vsprintf_s, vsnprintf_s - print formatted output of a vari‐
       able 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 vdprintf(int fildes, 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);


       int vasprintf(char **ret, const char *format, va_list ap);


       #define __STDC_WANT_LIB_EXT1__ 1
       #include <stdarg.h>
       #include <stdio.h>

       int vprintf_s(const char *restrict format, va_list ap);


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


       int vsprintf_s(char *restrict s, rsize_t n,
           const char *restrict format, va_list ap);


       int vsnprintf_s(char *restrict s, rsize_t n,
           const char *restrict format, va_list ap);

DESCRIPTION
       The  vprintf(),  vfprintf(),  vdprintf(),  vsprintf(), vsnprintf(), and
       vasprintf() functions are the same as printf(),  fprintf(),  dprintf(),
       sprintf(),   snprintf(),  and  asprintf(),  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).


       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(3EXT)).  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  defi‐
       nition,  as  in  the  function called error() in the example below. The
       macro va_start(ap, name), where ap is of type va_list and name  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() argu‐
       ments (arg1, arg2, ...) are passed to vfprintf() in the argument ap.


       The vprintf_s(), vfprintf_s(), vsnprintf_s(),  and  vsprintf_s()  func‐
       tions  are  part of the C11 bounds checking interfaces specified in the
       C11 standard, Annex K. The functions are similar  to  their  respective
       non-bounds  checking  functions, except for additional safety checks in
       the form of explicit runtime-constraints as defined in  the  C11  stan‐
       dard. See runtime_constraint_handler(3C) and INCITS/ISO/IEC 9899:2011.

RETURN VALUES
       Refer to printf(3C).

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.



       Likewise, the vdprintf() function will fail if:

       EBADF    The fildes argument is not a valid file descriptor.



       The  vprintf_s(),  vfprintf_s(), vsprintf_s() and vsnprintf() functions
       will fail if:

       EINVAL    Null pointer is passed.


       ERANGE    Size argument is not valid value.


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(const char *function_name, const 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(7) for descriptions of the following attributes:


       tab()  box; cw(2.75i) |cw(2.75i) lw(2.75i) |lw(2.75i) ATTRIBUTE TYPEAT‐
       TRIBUTE VALUE _ Interface StabilityCommitted _  MT-LevelSee  below.   _
       StandardSee below.


   MT-Level
       The  vprintf(),  vfprintf(),  vdprintf(),  vsprintf(), vsnprintf(), and
       vasprintf() functions can be used safely in multithreaded applications,
       as long as setlocale(3C) is not being called to change the locale.


       The  vprintf_s(),  vfprintf_s(),  vsprintf_s(), and vsnprintf_s() func‐
       tions cannot be used safely in a multithreaded application due  to  the
       runtime  constraint handler. For more information, see the runtime_con‐
       straint_handler(3C) man page.

   Standard
       See standards(7) for descriptions of the following standards:


       tab() box; cw(2.2i) |cw(3.3i) lw(2.2i)  |lw(3.3i)  INTERFACESAPPLICABLE
       STANDARDS _ vprintf(), vfprintf(), vsprintf()T{
         C89 through C11,
         POSIX.1-1990 through 2008,
         SUS through SUSv4,
         XPG1 through XPG7

       T} _ vsnprintf()T{
         C99 through C11
         POSIX.1-2001 through 2008,
         SUSv2 through SUSv4,
         XPG5 through XPG7

       T}   _  vdprintf()POSIX.1-2008,  XPG7  _  T{  printf_s(),  fprintf_s(),
       sprintf_s(), snprintf_s() T}C11 Annex K



       The vasprintf() function is modeled on the  one  that  appears  in  the
       FreeBSD, NetBSD, and GNU C libraries.

SEE ALSO
       printf(3C),  printf_s(3C),  vwprintf(3C),  stdarg(3EXT), attributes(7),
       standards(7), runtime_constraint_handler(3C)

HISTORY
       The support history for flag characters, length modifiers, and  conver‐
       sion  specifiers  are  the  same  as  for  the  printf()  function. See
       printf(3C).


       The   vdprintf(),   vprintf_s(),   vfprintf_s(),   vsprintf_s(),    and
       vsnprintf_s()  functions were added to Oracle Solaris in Oracle Solaris
       11.4.0.


       The vasprintf() function was added to Oracle Solaris in Oracle  Solaris
       10 8/11 (Update 10).


       The  vsnprintf()  return value when n = 0 was changed in the Solaris 10
       release. The change was based on the SUSv3 specification. The  previous
       behavior   was   based   on  the  initial  SUSv2  specification,  where
       vsnprintf() when n = 0 returns an unspecified value less than 1.


       The vsnprintf() function was added to Solaris in Solaris 2.5, and back‐
       ported to patches for Solaris 2.3 & 2.4.


       The  vprintf(), vfprintf(), and vsprintf() functions have been included
       in all Sun and Oracle releases of Solaris.



Oracle Solaris 11.4               29 Jul 2021                      vprintf(3C)
맨 페이지 내용의 저작권은 맨 페이지 작성자에게 있습니다.
RSS ATOM XHTML 5 CSS3