Функция vsprintf и vswprintf


Записывает форматированный вывод данных используя указатель на список параметров.

Синтаксис

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++)

 

Параметры

buffer

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

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.

Дополнительную информацию о совместимости см. в статье Совместимость в главе Введение.

Назад в оглавление
На главную страницу
В оглавление справки

Hosted by uCoz