Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages


home | help
vprintf(3C)		 Standard C Library Functions		   vprintf(3C)

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

       #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);

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

       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, 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() argu-
       ments (arg1,  arg2, ...)	are passed to vfprintf() in the	argument ap.

       Refer to	printf(3C).

       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.

       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(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);
	       (void) abort();

       See attributes(5) for descriptions of the following attributes:

       |      ATTRIBUTE	TYPE	     |	    ATTRIBUTE VALUE	   |
       |Interface Stability	     |Standard			   |
       |MT-Level		     |See below.		   |

       The  vprintf() and vfprintf() functions are MT-Safe. The	vsprintf() and
       vsnprintf() functions are Async-Signal-Safe.

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

       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.

SunOS 5.10			  29 Mar 2004			   vprintf(3C)


Want to link to this manual page? Use this URL:

home | help