Write formatted output to a buffer (varargs)
#include <stdio.h> #include <stdarg.h> int vsprintf( char* buf, const char* format, va_list arg );
libc
Use the -l c option to qcc to link against this library. This library is usually included automatically.
The vsprintf() function formats data under control of the format control string, and writes the result to buf.
The vsprintf() function is a “varargs” version of sprintf().
The number of characters written, or a negative value if an output error occurred (errno is set).
Use vsprintf() in a general error message routine:
#include <stdio.h> #include <stdarg.h> #include <stdlib.h> #include <string.h> char msgbuf[80]; char *fmtmsg( char *format, ... ) { va_list arglist; va_start( arglist, format ); strcpy( msgbuf, "Error: " ); vsprintf( &msgbuf[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 EXIT_SUCCESS; }
Safety: | |
---|---|
Cancellation point | No |
Interrupt handler | No |
Signal handler | Read the Caveats |
Thread | Yes |
It's safe to call vsprintf() in a signal handler if the data isn't floating point.
fprintf(), fwprintf(), printf(), snprintf(), sprintf(), swprintf(), va_start(), vfprintf(), vfwprintf(), vprintf(), vsnprintf(), vswprintf(), vwprintf(), wprintf()