Dela via


_scprintf_p, _scprintf_p_l, , _scwprintf_p_scwprintf_p_l

Returnerar antalet tecken i den formaterade strängen, med möjlighet att ange i vilken ordning parametrarna används i formatsträngen.

Syntax

int _scprintf_p(
   const char *format [,
   argument] ...
);
int _scprintf_p_l(
   const char *format,
   _locale_t locale [,
   argument] ...
);
int _scwprintf_p (
   const wchar_t *format [,
   argument] ...
);
int _scwprintf_p _l(
   const wchar_t *format,
   _locale_t locale [,
   argument] ...
);

Parameterar

format
Formatkontrollsträng.

argument
Valfria argument.

locale
Språkvarianten som ska användas.

Returvärde

Returnerar det antal tecken som skulle genereras om strängen skulle skrivas ut eller skickas till en fil eller buffert med de angivna formateringskoderna. Värdet som returneras innehåller inte det avslutande null-tecknet. _scwprintf_p utför samma funktion för breda tecken.

Skillnaden mellan _scprintf_p och _scprintf är att stöder positionsparametrar, vilket gör det _scprintf_p möjligt att ange i vilken ordning argumenten används i formatsträngen. Mer information finns i printf_p Positionsparametrar.

Om format är en NULL pekare anropas den ogiltiga parameterhanteraren enligt beskrivningen i Parameterverifiering. Om körningen tillåts fortsätta returnerar dessa funktioner -1 och ställs in errnoEINVAL.

Information om dessa och andra felkoder finns i errno, _doserrno, _sys_errlistoch _sys_nerr.

Anmärkningar

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.

Versionerna av dessa funktioner med suffixet _l är identiska, förutom att de använder parametern locale som skickas i stället för den aktuella trådspråkinställningen.

Viktigt!

Kontrollera att det format inte är en användardefinierad sträng.

Från och med Windows 10 version 2004 (version 19041) skriver funktionsfamiljen printf 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 också flyttalsrundningsläget som anges av fesetround. Tidigare valde FE_TONEAREST avrundning alltid 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 definierad _MBCS definierad _UNICODE definierad
_sctprintf_p _scprintf_p _scprintf_p _scwprintf_p
_sctprintf_p_l _scprintf_p_l _scprintf_p_l _scwprintf_p_l

Kravspecifikation

Rutin Obligatoriskt huvud
_scprintf_p, _scprintf_p_l <stdio.h>
_scwprintf_p, _scwprintf_p_l <stdio.h> eller <wchar.h>

Mer kompatibilitetsinformation finns i Kompatibilitet.

Se även

Strömma I/O
_scprintf, _scprintf_l, , _scwprintf_scwprintf_l
_printf_p, _printf_p_l, , _wprintf_p_wprintf_p_l