Поделиться через


sprintf, _sprintf_l, swprintf, _swprintf_l, __swprintf_l

Форматированные данные записи в строку.Более безопасные версии некоторых из этих функций доступны; см. sprintf_s, _sprintf_s_l, swprintf_s, _swprintf_s_l.безопасные версии swprintf и _swprintf_l не take a count параметр.

int sprintf(
   char *buffer,
   const char *format [,
   argument] ... 
);
int _sprintf_l(
   char *buffer,
   const char *format,
   locale_t locale [,
   argument] ... 
);
int swprintf(
   wchar_t *buffer,
   size_t count,
   const wchar_t *format [,
   argument]...
);
int _swprintf_l(
   wchar_t *buffer,
   size_t count,
   const wchar_t *format,
   locale_t locale [,
   argument] ... 
);
int __swprintf_l(
   wchar_t *buffer,
   const wchar_t *format,
   locale_t locale [,
   argument] ... 
);
template <size_t size>
int sprintf(
   char (&buffer)[size],
   const char *format [,
   argument] ... 
); // C++ only
template <size_t size>
int _sprintf_l(
   char (&buffer)[size],
   const char *format,
   locale_t locale [,
   argument] ... 
); // C++ only
template <size_t size>
int swprintf(
   wchar_t (&buffer)[size],
   size_t count,
   const wchar_t *format [,
   argument]...
); // C++ only
template <size_t size>
int _swprintf_l(
   wchar_t (&buffer)[size],
   size_t count,
   const wchar_t *format,
   locale_t locale [,
   argument] ... 
); // C++ only

Параметры

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

  • count
    Максимальное количество знаков, сохраняемый в версии Юникода этой функции.

  • format
    Строка Формат-элемента управления

  • argument
    Необязательные аргументы

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

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

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

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

sprintf возвращает число байтов, хранящийся в пределах bufferподсчет, которая не нуль-символ.swprintfвозвращает количество расширенных символов, расположенных в bufferподсчет null, не заканчивающийся расширенный символ.

Заметки

sprintf функция форматирует и сохраняет серию символов и значений в пределах buffer.Каждое argument (если таковые имеются), преобразования и выход в соответствии с соответствующим спецификации формата in format.Формат состоящая из обычных символов и имеет те же форму, как и функции format аргумент printf.Нуль-символ написанного добавляется после последнего символа.Если копирование происходит между строками, которые перекрываются функциональности не определено.

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

использование sprintfотсутствует возможность ограничить число записанных символов, означающее этот Код с помощью sprintf впечатлителен к заскокам буфера.Попробуйте использовать функцию related _snprintf, которое определяет максимальное количество знаков для записи bufferили использование _scprintf определить размер буфера не требуется.Кроме того, убедитесь, то format не является определяемой пользователем строкой.

swprintf версия расширенных символов sprintf; аргументы указателя на swprintf характерные черты.Обнаружение ошибок кодирования in swprintf может отличаться от in sprintf.swprintf и fwprintf поступайте идентичны за исключением того, что swprintf записи в строку, а не вывода производные в целевой тип FILEи swprintf требует countпараметр, чтобы указать максимальное число символов, которые требуется записать.Версии этих функций с _l суффикс идентичны за исключением того, что они используют параметр, переданный вместо языкового стандарта текущего языкового стандарта потока.

swprintf соответствует стандарту ISO, c#, который требует второго параметра countтипа size_t.Для принудительного старую нештатную расширения функциональности, укажите _CRT_NON_CONFORMING_SWPRINTFS.В будущей версии, старая функциональности может быть удалена, поэтому Код должен быть изменен для использования новой conformant расширения функциональности.

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

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

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

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

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

Указанный _UNICODE

_stprintf

sprintf

sprintf

swprintf

_stprintf_l

_sprintf_l

_sprintf_l

__swprintf_l

Требования

Процедура

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

sprintf, _sprintf_l

<stdio.h>

swprintf, _swprintf_l

<stdio.h> OR <wchar.h>

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

Пример

// crt_sprintf.c
// compile with: /W3
// This program uses sprintf to format various
// data and place them in the string named buffer.

#include <stdio.h>

int main( void )
{
   char  buffer[200], s[] = "computer", c = 'l';
   int   i = 35, j;
   float fp = 1.7320534f;

   // Format and print various data: 
   j  = sprintf( buffer,     "   String:    %s\n", s ); // C4996
   j += sprintf( buffer + j, "   Character: %c\n", c ); // C4996
   j += sprintf( buffer + j, "   Integer:   %d\n", i ); // C4996
   j += sprintf( buffer + j, "   Real:      %f\n", fp );// C4996
   // Note: sprintf is deprecated; consider using sprintf_s instead

   printf( "Output:\n%s\ncharacter count = %d\n", buffer, j );
}
  
// crt_swprintf.c
// wide character example
// also demonstrates swprintf returning error code
#include <stdio.h>

int main( void )
{
   wchar_t buf[100];
   int len = swprintf( buf, 100, L"%s", L"Hello world" );
   printf( "wrote %d characters\n", len );
   len = swprintf( buf, 100, L"%s", L"Hello\xffff world" );
   // swprintf fails because string contains WEOF (\xffff)
   printf( "wrote %d characters\n", len );
}
  

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

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

См. также

Ссылки

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

fprintf, _fprintf_l, fwprintf, _fwprintf_l

printf, _printf_l, wprintf, _wprintf_l

scanf, _scanf_l, wscanf, _wscanf_l

sscanf, _sscanf_l, swscanf, _swscanf_l

функции vprintf