![]() |
![]() |
![]() |
![]() |
Write formatted output to a character array, up to a given maximum number of characters
#include <stdarg.h> #include <stdio.h> int vsnprintf( char* buf, size_t count, const char* format, va_list arg );
libc
The vsnprintf() function formats data under control of the format control string and stores the result in buf. The maximum number of characters to store, including a terminating null character, is specified by count. For details on the format string, refer to the printf() function.
The vsnprintf() function is equivalent to snprintf(), with a variable argument list.
The number of characters written into the array, not counting the terminating null character, or a negative value if count or more characters are requested to be generated. An error can occur while converting a value for output.
If an error occurs, errno contains a value that indicates the type of error detected.
The following shows the use of vsnprintf() in a general error message routine:
#include <stdio.h> #include <stdarg.h> #include <string.h> char msgbuf[80]; char *fmtmsg( char *format, ... ) { va_list arglist; va_start( arglist, format ); strcpy( msgbuf, "Error: " ); vsnprintf( &msgbuf[7], 80-7, format, arglist ); va_end( arglist ); return( msgbuf ); } int main( void ) { char *msg; msg = fmtmsg( "%s %d %s", "Failed", 100, "times" ); printf( "%s\n", msg ); return 0; }
Safety: | |
---|---|
Cancellation point | No |
Interrupt handler | Read the Caveats |
Signal handler | Read the Caveats |
Thread | Yes |
It's safe to call vsnprintf() in an interrupt handler or signal handler if the data isn't floating point.
errno, fprintf(), printf(), snprintf(), sprintf(), va_arg(), va_end(), va_start(), vfprintf(), vprintf(), vsprintf()
![]() |
![]() |
![]() |
![]() |