MyWebUniversity.com Home Page
 



OpenSolaris man pages main menu


Standard C Library Functions                          vprintf(3C)



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

SYNOPSIS
     #include 
     #include 

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


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


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


     int vsnprintf(char *s, sizet n, const char *format, valist ap);


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


DESCRIPTION
     The  vprintf(),  vfprintf(),  vsprintf(),  vsnprintf(),  and
     vasprintf()  functions  are the same as printf(), fprintf(),
     sprintf(), snprintf(), and asprintf(), respectively,  except
     that instead of being called with a variable number of argu-
     ments, they are called with an argument list as  defined  in
     the  header. See printf(3C).


     The  header defines the type valist 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 valist. This argument is
     used with the    header  file  macros  vastart(),
     vaarg(), and vaend() (see stdarg(3EXT)). The EXAMPLES sec-
     tion below demonstrates the use of vastart()  and  vaend()
     with vprintf().


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



SunOS 5.11           Last change: 7 Jan 2009                    1






Standard C Library Functions                          vprintf(3C)



     vfprintf() in the argument ap.

RETURN VALUES
     Refer to printf(3C).

ERORS
     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 
       #include 
       . . .
       /*
        *   error should be called like
        *         error(functionname, format, arg1, ...);
        */
       void error(char *functionname, char *format, ...)
       {
               valist ap;
               vastart(ap, format);
               /* print out name of function causing error */
               (void) fprintf(stderr, "ER in %s: ", functionname);
               /* print out remainder of message */
               (void) vfprintf(stderr, format, ap);
               vaend(ap);
               (void) abort();
       }


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










SunOS 5.11           Last change: 7 Jan 2009                    2






Standard C Library Functions                          vprintf(3C)



     
           ATRIBUTE TYPE               ATRIBUTE VALUE       
    
     Interface Stability          Committed                   
    
     MT-Level                     See below.                  
    
     Standard                     See below.                  
    



     All of these functions can be used safely  in  multithreaded
     applications,  as  long as setlocale(3C) is not being called
     to change the locale.


     See standards(5) for the standards conformance of vprintf(),
     vfprintf(),  vsprintf(),  and  vsnprintf().  The vasprintf()
     function is modeled on the one that appears in the  FreeBSD,
     NetBSD, and GNU C libraries.

SEE ALSO
     printf(3C),  attributes(5),   stdarg(3EXT),   attributes(5),
     standards(5)

NOTES
     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  ini-
     tial  SUSv2  specification,  where  vsnprintf()  when  n = 0
     returns an unspecified value less than 1.























SunOS 5.11           Last change: 7 Jan 2009                    3



OpenSolaris man pages main menu

Contact us      |       About us      |       Term of use      |       Copyright © 2000-2010 MyWebUniversity.com ™