Записать вывод в область памяти (varargs)
#include <stdio.h>#include <stdarg.h>int vsprintf( char *buf,const char *format,va_list arg );
libc
Функция vsprintf() отформатирует данные в соответсвии со строкой format, и запишет результат в buf.
Функция vsprintf() является “varargs” версией функции sprintf().
Использование vsprintf() для вывода сообщений об ошибках:
#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);}
ANSI, POSIX 1003.1
Функция безопасна для вызова в обработчике сигналов, если аргументы не числа с плавающей точкой.
fprintf(), fwprintf(), printf(), snprintf(), sprintf(), swprintf(), va_start(), vfprintf(), vfwprintf(), vprintf(), vsnprintf(), vswprintf(), vwprintf(), wprintf()
Предыдущий раздел: Описание API системной библиотеки