svcadm(8)을 검색하려면 섹션에서 8 을 선택하고, 맨 페이지 이름에 svcadm을 입력하고 검색을 누른다.
vfprintf_s(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)