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
См. также
Ссылки
fprintf, _fprintf_l, fwprintf, _fwprintf_l
printf, _printf_l, wprintf, _wprintf_l
scanf, _scanf_l, wscanf, _wscanf_l