vsprintf()

Записать вывод в область памяти (varargs)

Прототип:

#include <stdio.h>
#include <stdarg.h>
int vsprintf( char *buf,
const char *format,
va_list arg );

Аргументы:

buf
Указатель на буфер, в который функция сохранит отформатированную строку.
format
Строка, характеризующая формат выходной информации. Она определяет какие дополнительные аргументы следует передать функции. Дополнительная информация о формате параметра fmt указана на странице printf()
arg
Cписок аргументов переменной длины для дополнительных аргументов, который должен быть инициализирован макросом va_start().

Библиотека:

libc

Описание:

Функция vsprintf() отформатирует данные в соответсвии со строкой format, и запишет результат в buf.

Функция vsprintf() является “varargs” версией функции sprintf().

Возвращаемое значение:

>=0
Число записанных символов.
<0
Возникла ошибка. Код ошибки записан в errno.

Примеры:

Использование 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 системной библиотеки