Dela via


_vscprintf_p, _vscprintf_p_l, _vscwprintf_p, _vscwprintf_p_l

Returnerar antalet tecken i den formaterade strängen med hjälp av en pekare till en lista med argument, med möjlighet att ange i vilken ordning argumenten används.

Syntax

int _vscprintf_p(
   const char *format,
   va_list argptr
);
int _vscprintf_p_l(
   const char *format,
   _locale_t locale,
   va_list argptr
);
int _vscwprintf_p (
   const wchar_t *format,
   va_list argptr
);
int _vscwprintf_p_l(
   const wchar_t *format,
   _locale_t locale,
   va_list argptr
);

Parametrar

format
Formatkontrollsträng.

argptr
Pekare till lista över argument.

locale
Språkvarianten som ska användas.

Mer information finns i Formatspecifikationssyntax.

Returvärde

_vscprintf_p returnerar det antal tecken som skulle genereras om strängen som pekar på i listan över argument skrevs ut eller skickades till en fil eller buffert med de angivna formateringskoderna. Värdet som returneras innehåller inte det avslutande null-tecknet. _vscwprintf_p utför samma funktion för breda tecken.

Anmärkningar

Dessa funktioner skiljer sig från _vscprintf och _vscwprintf endast i att de stöder möjligheten att ange i vilken ordning argumenten används. Mer information finns i printf_p Positionsparametrar.

Versionerna av dessa funktioner med suffixet _l är identiska, förutom att de använder språkparametern som skickas i stället för det aktuella trådspråket.

Returvärde är storleken på de formaterade data. Om funktionen tar en char buffert är storleken i byte. Om funktionen tar en wchar_t buffert anger storleken antalet 16-bitars ord. Tecken refererar till char tecken för funktioner som tar en char buffert och för att wchar_t tecken för funktioner som tar en wchar_t buffert.

Om format är en null-pekare anropas den ogiltiga parameterhanteraren enligt beskrivningen i Parameterverifiering. Om körningen tillåts fortsätta returnerar funktionerna -1 och anger errno till EINVAL.

Viktig

Kontrollera att om format är en användardefinierad sträng är den null avslutad och har rätt antal och typ av parametrar. Mer information finns i Undvika buffertöverskridanden. Från och med Windows 10 version 2004 (version 19041) skriver printf-serien av funktioner ut exakt representerande flyttalsnummer enligt IEEE 754-reglerna för avrundning. I tidigare versioner av Windows skulle exakt representerande flyttalsnummer som slutar på "5" alltid avrunda uppåt. IEEE 754 anger att de måste avrunda till den närmaste jämna siffran (även kallat "Bankers avrundning"). Till exempel bör både printf("%1.0f", 1.5) och printf("%1.0f", 2.5) avrunda till 2. Tidigare skulle 1,5 avrunda till 2 och 2,5 skulle avrunda till 3. Den här ändringen påverkar endast exakt representerande tal. Till exempel fortsätter 2.35 (som, när det representeras i minnet, är närmare 2.3500000000000000008) att avrunda upp till 2,4. Avrundning som utförs av dessa funktioner respekterar nu även avrundningsläget för flyttal som anges av fesetround. Tidigare valde avrundning alltid FE_TONEAREST beteende. Den här ändringen påverkar endast program som skapats med Visual Studio 2019 version 16.2 och senare. Om du vill använda det äldre avrundningsbeteendet för flyttalser länkar du till "legacy_stdio_float_rounding.obj".

Allmän textrutinmappning

TCHAR. H-rutin _UNICODE och _MBCS inte definierat _MBCS definierad _UNICODE definierad
_vsctprintf_p _vscprintf_p _vscprintf_p _vscwprintf_p
_vsctprintf_p_l _vscprintf_p_l _vscprintf_p_l _vscwprintf_p_l

Krav

Rutin Obligatoriskt huvud
_vscprintf_p, _vscprintf_p_l <stdio.h>
_vscwprintf_p, _vscwprintf_p_l <stdio.h> eller <wchar.h>

Mer kompatibilitetsinformation finns i Compatibility.

Exempel

Se exemplet för vsprintf.

Se även

vprintf funktioner
_scprintf_p, _scprintf_p_l, _scwprintf_p, _scwprintf_p_l
_vscprintf, _vscprintf_l, _vscwprintf, _vscwprintf_l