Dela via


_vscprintf, _vscprintf_l, _vscwprintf, _vscwprintf_l

Returnerar antalet tecken i den formaterade strängen med hjälp av en pekare till en lista med argument.

Syntax

int _vscprintf(
   const char *format,
   va_list argptr
);
int _vscprintf_l(
   const char *format,
   _locale_t locale,
   va_list argptr
);
int _vscwprintf(
   const wchar_t *format,
   va_list argptr
);
int _vscwprintf_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 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 utför samma funktion för breda tecken.

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.

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.

Anmärkningar

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.

Varje argument (om någon) konverteras enligt motsvarande formatspecifikation i format. Formatet består av vanliga tecken och har samma formulär och funktion som argumentet format för printf.

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 _vscprintf _vscprintf _vscwprintf
_vsctprintf_l _vscprintf_l _vscprintf_l _vscwprintf_l

Krav

Rutin Obligatoriskt huvud
_vscprintf, _vscprintf_l <stdio.h>
_vscwprintf, _vscwprintf_l <stdio.h> eller <wchar.h>

Mer kompatibilitetsinformation finns i Compatibility.

Exempel

Se exemplet för vsprintf.

Se även

Stream I/O-
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 funktioner