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

개요

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

vprintf(3c)

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 in‐
       stead 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 defin‐
       ition, 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  at‐
       tempt  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.


       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 er‐
       ror 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   vs‐
       nprintf_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 vs‐
       nprintf() 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