vsprintf_s, _vsprintf_s_l, vswprintf_s, _vswprintf_s_l

Форматированный вывод записью с помощью указатель на список аргументов.Эти версии vsprintf, _vsprintf_l, vswprintf, _vswprintf_l, __vswprintf_l со службами расширений безопасности, как описано в разделе Средства безопасности в CRT.

int vsprintf_s(
   char *buffer,
   size_t numberOfElements,
   const char *format,
   va_list argptr 
); 
int _vsprintf_s_l(
   char *buffer,
   size_t numberOfElements,
   const char *format,
   locale_t locale,
   va_list argptr 
); 
int vswprintf_s(
   wchar_t *buffer,
   size_t numberOfElements,
   const wchar_t *format,
   va_list argptr 
);
int _vswprintf_s_l(
   wchar_t *buffer,
   size_t numberOfElements,
   const wchar_t *format,
   locale_t locale,
   va_list argptr 
);
template <size_t size>
int vsprintf_s(
   char (&buffer)[size],
   const char *format,
   va_list argptr 
); // C++ only
template <size_t size>
int vswprintf_s(
   wchar_t (&buffer)[size],
   const wchar_t *format,
   va_list argptr 
); // C++ only

Параметры

  • buffer
    Место хранения для вывода.

  • numberOfElements
    Размер buffer в символах.

  • format
    Спецификация формата.

  • argptr
    Указатель на список аргументов.

  • locale
    Языковой стандарт, который необходимо использовать.

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

vsprintf_s и vswprintf_s возвращает число записанных символов, не включая конечное нуль-символ или отрицательное значение, если происходит ошибка вывода.If buffer OR format является указателем null, если число равно нулю, либо если строка форматирования содержит недопустимые символы форматирования параметра недопустимый обработчик вызывается, как описано в разделе Проверка параметров.Если выполнение может быть продолжено, то функции возвращают -1 и задают errno В EINVAL.

Дополнительные сведения об этих и других кодах ошибок см. в разделе _doserrno, errno, _sys_errlist и _sys_nerr.

Заметки

Каждая из этих функций принимает указатель на список аргументов, а затем форматы и записывает заданный данных в памяти, на by buffer.

vswprintf_s соответствует стандарту ISO для c# vswprintf, который требует второго параметра countтипа size_t.

Эти функции отличаются от версий non-безопасных только тем, что безопасные версии поддерживают позиционированных параметров.Дополнительные сведения см. в разделе позиционных параметров printf_p.

Версии этих функций с _l суффикс идентичны за исключением того, что они используют параметр, переданный вместо языкового стандарта текущего языкового стандарта потока.

В C++ с помощью этих функций упрощает перегрузками шаблона; перегруженные методы могут определять длина буфера, автоматически (что устраняет необходимость указать аргумент size) и они могут автоматически заменять старые, non-безопасные функции с их новыми, безопасный копиями.Дополнительные сведения см. в разделе Предоставляйте перегруженный шаблона.

Сопоставления подпрограммы Родов-Текста

Подпрограмма TCHAR.H

_MBCS не заданные _UNICODE &

Указанный символ _MBCS

Указанный _UNICODE

_vstprintf_s

vsprintf_s

vsprintf_s

vswprintf_s

_vstprintf_s_l

_vsprintf_s_l

_vsprintf_s_l

_vswprintf_s_l

Требования

Процедура

Обязательный заголовок

Необязательные заголовки

vsprintf_s, _vsprintf_s_l

<stdio.h> и <stdarg.h>

<varargs.h>*

vswprintf_s, _vswprintf_s_l

<stdio.h> OR <wchar.h>и <stdarg.h>

<varargs.h>*

* Требуется для совместимости UNIX v.

Дополнительные сведения о совместимости см. Совместимость во введении.

Пример

// crt_vsprintf_s.c
// This program uses vsprintf_s to write to a buffer.
// The size of the buffer is determined by _vscprintf.

#include <stdlib.h>
#include <stdarg.h>

void test( char * format, ... )
{
   va_list args;
   int len;
   char * buffer;

   va_start( args, format );
   len = _vscprintf( format, args ) // _vscprintf doesn't count
                               + 1; // terminating '\0'
   buffer = malloc( len * sizeof(char) );
   vsprintf_s( buffer, len, format, args );
   puts( buffer );
   free( buffer );
}

int main( void )
{
   test( "%d %c %d", 123, '<', 456 );
   test( "%s", "This is a string" );
}
  

Эквивалент в .NET Framework

System:: строка:: Формат

См. также

Ссылки

Поток ВВОДА-ВЫВОДА

функции vprintf

Синтаксис описания формата: функции printf и wprintf

fprintf, _fprintf_l, fwprintf, _fwprintf_l

printf, _printf_l, wprintf, _wprintf_l

sprintf, _sprintf_l, swprintf, _swprintf_l, __swprintf_l

va_arg, va_end, va_start