Записывает форматированный вывод данных используя указатель на список параметров.
int vsprintf( char *buffer, const char *format, va_list argptr ); int vswprintf( wchar_t *buffer, const wchar_t *format, va_list argptr ); int vswprintf( wchar_t *buffer, size_t count, const wchar_t *format, va_list argptr ); // (только для C++)
|
Место хранения данных для вывода.
countМаксимальное число сохраняемых символов.
formatСпецификация формата.
argptrСписок указателя на параметры.
Функции vsprintf and vswprintf возвращают число записанных символов, включая символ завершающего нуля, или отрицательное значение, если происходит ошибка при выводе.
Каждая из этих функций получает указатель на список параметров, а затем форматирует и записывает полученные данные в память указанную при помощи buffer .
Обеспечение безопасности! Обратите внимание! на то, что нет никакого способа ограничить число записанных символов, что означает, что код, используя эти функции восприимчив к переполнению буфера. Используйте _vsnprintf вместо него, или вызовите _vscprintf, чтобы определить, какой величины нужен буфер. Кроме того, убедитесь в том, что формат - не определяемая пользователем строка. Для получения дополнительной информации, см. статью Предотвращение переполнения буфера. |
Унифицированно-текстовые стандартные отображения
Процедура TCHAR.H |
_UNICODE & _MBCS не определены |
_MBCS определен |
_UNICODE определен |
---|---|---|---|
_vstprintf | vsprintf | vsprintf | vswprintf |
Все версии библиотек С времени исполнения программы.
// crt_vsprintf.c// Эта программа использует vsprintf для записи в буфер. // Размер буфера определяется при помощи _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 не рассчитывает + 1; // завершение '\0' buffer = malloc( len * sizeof(char) ); vsprintf( buffer, format, args ); printf( buffer ); free( buffer ); } int main( void ) { test( "%d %c %d\n", 123, '<', 456 ); test( "%s\n", "This is a string" ); } Вывод данных 123 < 456 Это строка |
Процедуры потока ввода-вывода I/O | Обзор функций vprintf | Поля спецификации формата: функции printf и wprintf | fprintf | printf | sprintf | va_arg | Процедуры времени исполнения программы и эквиваленты .NET Framework
Процедура |
Требуемый заголовочный файл |
Дополнительные заголовочные файлы |
Совместимость |
---|---|---|---|
vsprintf | <stdio.h> и <stdarg.h> | <varargs.h>* | ANSI, Win 98, Win Me, Win NT, Win 2000, Win XP |
vswprintf | <stdio.h> или <wchar.h> и <stdarg.h> | <varargs.h>* | ANSI, Win 98, Win Me, Win NT, Win 2000, Win XP |
* Требуется для совместимости с UNIX V.
Дополнительную информацию о совместимости см. в статье Совместимость в главе Введение.