_sprintf_p, _sprintf_p_l, _swprintf_p, _swprintf_p_l
Zapisać ciąg sformatowanych danych umożliwia określenie kolejności, że parametry są używane w ciągu formatu.
int _sprintf_p(
char *buffer,
size_t sizeOfBuffer,
const char *format [,
argument] ...
);
int _sprintf_p_l(
char *buffer,
size_t sizeOfBuffer,
const char *format,
locale_t locale [,
argument] ...
);
int _swprintf_p(
wchar_t *buffer,
size_t sizeOfBuffer,
const wchar_t *format [,
argument]...
);
int _swprintf_p_l(
wchar_t *buffer,
size_t sizeOfBuffer,
const wchar_t *format,
locale_t locale [,
argument] …
);
Parametry
buffer
Miejsce przechowywania danych wyjściowychsizeOfBuffer
Maksymalna liczba znaków do przechowywania.format
Ciąg formatu formantuargument
Opcjonalne argumentylocale
Ustawienia regionalne, aby użyć.
Aby uzyskać więcej informacji, zobacz Specyfikacji formatu.
Wartość zwracana
Liczba znaków napisane lub –1, jeżeli wystąpił błąd.
Uwagi
_sprintf_p Funkcji formaty i przechowuje szereg znaków wartości w buffer.Każdy argument (jeśli ma zastosowanie) jest konwertowane i wyjściowe zgodnie ze specyfikacją odpowiedni format w format.Format składa się ze znaków zwykłych i ma ten sam formularz i działać jako format argument dla printf_p.A NULL znak jest dołączany po ostatniego napisanego znaku.Jeśli kopiowanie występuje między ciągami, które się pokrywają, zachowanie jest niezdefiniowane.Różnica między _sprintf_p i sprintf_s jest to, że _sprintf_p obsługuje parametry pozycyjne, które umożliwia określenie kolejności, w której używane są argumenty w ciągu formatu.Aby uzyskać więcej informacji, zobacz printf_p Parametry pozycyjne.
_swprintf_pjest to wersja szerokich znaków _sprintf_p; argumenty wskaźnik do _swprintf_p są ciągami szerokich znaków.Wykrywanie błędów kodowania _swprintf_p może się różnić od w _sprintf_p._swprintf_pi fwprintf_p zachowują się identycznie, z wyjątkiem _swprintf_p zapisuje dane wyjściowe na ciąg znaków, a nie do miejsca docelowego typu FILE, i _swprintf_p wymaga countparametr, aby określić maksymalną liczbę znaków, które mają być zapisane.Wersje te funkcje, z _l sufiks są identyczne, z wyjątkiem, że używają oni przekazany zamiast bieżące ustawienia regionalne wątku parametr ustawień regionalnych.
_sprintf_pZwraca liczbę bajtów, przechowywane w buffer, nie licząc kończące NULL znaków._swprintf_pZwraca liczbę znaków szerokości przechowywane w buffer, nie licząc kończące NULL szerokości znaków.Jeśli buffer lub format jest wskaźnik zerowy lub jeśli ciąg formatu zawiera nieprawidłowe znaki formatowania, nieprawidłowy parametr wywoływana jest funkcja obsługi, zgodnie z opisem w Sprawdzanie poprawności parametru.Jeśli wykonanie może kontynuować, funkcje te zwracają wartość -1 i errno do EINVAL.
Tekst rodzajowy rutynowych mapowania
TCHAR.Rutynowe H |
_UNICODE & Nie zdefiniowano _MBCS |
_MBCS, definicja |
_UNICODE, definicja |
---|---|---|---|
_stprintf_p |
_sprintf_p |
_sprintf_p |
_swprintf_p |
_stprintf_p_l |
_sprintf_p_l |
_sprintf_p_l |
_swprintf_p_l |
Wymagania
Rozpoczęto wykonywanie procedury |
Wymaganego nagłówka |
---|---|
_sprintf_p, _sprintf_p_l |
<stdio.h> |
_swprintf_p, _swprintf_p_l |
<stdio.h> lub <wchar.h> |
Aby uzyskać dodatkowe informacje o zgodności, zobacz zgodności we wprowadzeniu.
Przykład
// crt_sprintf_p.c
// This program uses _sprintf_p 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_p( buffer, 200,
" String: %s\n", s );
j += _sprintf_p( buffer + j, 200 - j,
" Character: %c\n", c );
j += _sprintf_p( buffer + j, 200 - j,
" Integer: %d\n", i );
j += _sprintf_p( buffer + j, 200 - j,
" Real: %f\n", fp );
printf( "Output:\n%s\ncharacter count = %d\n",
buffer, j );
}
// crt_swprintf_p.c
// This is the wide character example which
// also demonstrates _swprintf_p returning
// error code.
#include <stdio.h>
#define BUFFER_SIZE 100
int main( void )
{
wchar_t buffer[BUFFER_SIZE];
int len;
len = _swprintf_p(buffer, BUFFER_SIZE, L"%2$s %1$d",
0, L" marbles in your head.");
_printf_p( "Wrote %d characters\n", len );
// _swprintf_p fails because string contains WEOF (\xffff)
len = _swprintf_p(buffer, BUFFER_SIZE, L"%s",
L"Hello\xffff world" );
_printf_p( "Wrote %d characters\n", len );
}
Odpowiednik w programie .NET Framework
Zobacz też
Informacje
_fprintf_p, _fprintf_p_l, _fwprintf_p, _fwprintf_p_l
fprintf, _fprintf_l, fwprintf, _fwprintf_l
_printf_p, _printf_p_l, _wprintf_p, _wprintf_p_l
printf, _printf_l, wprintf, _wprintf_l
scanf, _scanf_l, wscanf, _wscanf_l
sscanf, _sscanf_l, swscanf, _swscanf_l