Standard C Library Functions vprintf(3C)
NAME
vprintf, vfprintf, vsprintf, vsnprintf, vasprintf - print
formatted output of a variable argument listSYNOPSIS
#include
#include
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);
int vasprintf(char **ret, const char *format, va_list ap);
DESCRIPTION
The vprintf(), vfprintf(), vsprintf(), vsnprintf(), andvasprintf() functions are the same as printf(), fprintf(),
sprintf(), snprintf(), and asprintf(), respectively, exceptthat instead of being called with a variable number of argu-
ments, they are called with an argument list as defined in theheader. See printf(3C). The
macros for advancing through a list of arguments whose number and types may vary. The argument ap to the vprintheader defines the type va_list and a set of family of functions is of type va_list. This argument is
used with the
header file macros va_start(), va_arg(), and va_end() (see stdarg(3EXT)). The EXAMPLES sec-
tion 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 definition, as in the function called error() inthe 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 traverseand 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 ifva_start() is called again after va_end(). In the example
below, the error() arguments (arg1, arg2, ...) are passed toSunOS 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).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.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(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);va_end(ap);
(void) abort(); }ATTRIBUTES
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)____________________________________________________________
| ATTRIBUTE TYPE | ATTRIBUTE 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 SUSv3specification. 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