vsnprintf, _vsnprintf, _vsnprintf_l, _vsnwprintf, _vsnwprintf_l

Форматированный вывод записью с помощью указатель на список аргументов.Более безопасные версии этих функций доступны; см. vsnprintf_s, _vsnprintf_s, _vsnprintf_s_l, _vsnwprintf_s, _vsnwprintf_s_l.

int vsnprintf(
   char *buffer,
   size_t count,
   const char *format,
   va_list argptr 
);
int _vsnprintf(
   char *buffer,
   size_t count,
   const char *format,
   va_list argptr 
);
int _vsnprintf_l(
   char *buffer,
   size_t count,
   const char *format,
   locale_t locale,
   va_list argptr 
);
int _vsnwprintf(
   wchar_t *buffer,
   size_t count,
   const wchar_t *format,
   va_list argptr 
);
int _vsnwprintf_l(
   wchar_t *buffer,
   size_t count,
   const wchar_t *format,
   locale_t locale,
   va_list argptr 
);
template <size_t size>
int vsnprintf(
   char (&buffer)[size],
   size_t count,
   const char *format,
   va_list argptr 
); // C++ only
template <size_t size>
int _vsnprintf(
   char (&buffer)[size],
   size_t count,
   const char *format,
   va_list argptr 
); // C++ only
template <size_t size>
int _vsnprintf_l(
   char (&buffer)[size],
   size_t count,
   const char *format,
   locale_t locale,
   va_list argptr 
); // C++ only
template <size_t size>
int _vsnwprintf(
   wchar_t (&buffer)[size],
   size_t count,
   const wchar_t *format,
   va_list argptr 
); // C++ only
template <size_t size>
int _vsnwprintf_l(
   wchar_t (&buffer)[size],
   size_t count,
   const wchar_t *format,
   locale_t locale,
   va_list argptr 
); // C++ only

Параметры

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

  • count
    Максимальное число символов, которые требуется записать.

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

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

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

Дополнительные сведения см. в разделе Спецификации формата.

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

vsnprintf"_vsnprintfи _vsnwprintf возвращает число записанных символов, если количество знаков для записи меньше или равно count; если количество знаков для записи больше countэти функции возвращают -1, указывающее, что выход был усечен.Возвращаемое значение не включает конечный null, если для записи.

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

Заметки

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

Примечание о безопасностиПримечание по безопасности

Убедитесь, что format не является определяемой пользователем строкой.Дополнительные сведения см. в разделе Исключение переполнения буфера.

ПримечаниеПримечание

Убедиться, что места для конечного убедитесь, что null count строго, чем длина буфера и инициализирует буфер null до вызова функции.

vsnprintf идентичны _vsnprintf.vsnprintf включены соответствие стандартам ANSI; _vnsprintf сохраняется для обеспечения обратной совместимости.

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

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

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

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

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

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

Указанный _UNICODE

_vsntprintf

_vsnprintf

_vsnprintf

_vsnwprintf

_vsntprintf_l

_vsnprintf_l

_vsnprintf_l

_vsnwprintf_l

Требования

Процедура

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

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

vsnprintf

<stdio.h> и <stdarg.h>

<varargs.h>*

_vsnprintf, _vsnprintf_l

<stdio.h> и <stdarg.h>

<varargs.h>*

_vsnwprintf, _vsnwprintf_l

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

<varargs.h>*

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

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

Пример

// crt_vsnprintf.cpp
// compile with: /W3
#include <stdio.h>
#include <wtypes.h>

void FormatOutput(LPCSTR formatstring, ...) 
{
   int nSize = 0;
   char buff[10];
   memset(buff, 0, sizeof(buff));
   va_list args;
   va_start(args, formatstring);
   nSize = vsnprintf( buff, sizeof(buff) - 1, formatstring, args); // C4996
// Note: vsnprintf is deprecated; consider vsnprintf_s instead
   printf("nSize: %d, buff: %s\n", nSize, buff);
}

int main() {
   FormatOutput("%s %s", "Hi", "there");
   FormatOutput("%s %s", "Hi", "there!");
   FormatOutput("%s %s", "Hi", "there!!");
}
  
  

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

Неприменимо. Для c# используйте стандартная функция PInvoke. Дополнительные сведения см. в разделе Примеры вызовов неуправляемого кода.

См. также

Ссылки

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

функции 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