_scprintf_p
, _scprintf_p_l
, , _scwprintf_p
_scwprintf_p_l
Vrátí počet znaků ve formátovaném řetězci s možností určit pořadí, ve kterém se parametry používají ve formátovacím řetězci.
Syntaxe
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] ...
);
Parametry
format
Řetězec řízení formátu
argument
Volitelné argumenty
locale
Národní prostředí, které se má použít
Vrácená hodnota
Vrátí počet znaků, které by se vygenerovaly, pokud by byl řetězec vytištěn nebo odeslán do souboru nebo vyrovnávací paměti pomocí zadaných kódů formátování. Vrácená hodnota neobsahuje ukončující znak null. _scwprintf_p
provede stejnou funkci pro široké znaky.
Rozdíl mezi _scprintf_p
a _scprintf
je, že _scprintf_p
podporuje poziční parametry, což umožňuje určit pořadí, ve kterém jsou argumenty použity ve formátovacím řetězci. Další informace najdete v tématu printf_p poziční parametry.
Pokud format
je NULL
ukazatel, je vyvolána neplatná obslužná rutina parametru, jak je popsáno v ověření parametru. Pokud je povolené provádění pokračovat, vrátí tyto funkce hodnotu -1 a nastaví errno
se na EINVAL
hodnotu .
Informace o těchto a dalších kódech chyb naleznete v tématu , , , a_sys_nerr
. _sys_errlist
_doserrno
errno
Poznámky
Každý argument
(pokud existuje) je převeden podle odpovídající specifikace formátu v format
. Formát se skládá z obyčejných znaků a má stejný tvar a funkci jako format
argument pro printf
.
Verze těchto funkcí s příponou _l
jsou shodné s tím rozdílem, že používají parametr národního prostředí předaný místo aktuálního národního prostředí vlákna.
Důležité
Ujistěte se, že format
není uživatelem definovaný řetězec.
Počínaje Windows 10 verze 2004 (build 19041) printf
vytiskne řada funkcí přesně reprezentovatelná čísla s plovoucí desetinnou čárkou podle pravidel IEEE 754 pro zaokrouhlování. V předchozích verzích Windows by se vždy zaokrouhlila přesně reprezentovatelná čísla s plovoucí desetinnou čárkou končící na 5. IEEE 754 uvádí, že musí zaokrouhlit na nejbližší sudou číslici (označované také jako "Zaokrouhlování bankera"). Například obě printf("%1.0f", 1.5)
a printf("%1.0f", 2.5)
měly by se zaokrouhlit na 2. Dříve by se 1,5 zaokrouhlo na 2 a 2,5 by se zaokrouhlilo na 3. Tato změna má vliv jenom na přesně reprezentovatelná čísla. Například hodnota 2,35 (která je při znázornění v paměti blíže 2,350000000000008) pokračuje zaokrouhlit nahoru na 2,4. Zaokrouhlování provedené těmito funkcemi nyní respektuje také režim zaokrouhlování s plovoucí desetinou čárkou nastavený .fesetround
Dříve bylo zaokrouhlení vždy zvoleno FE_TONEAREST
chování. Tato změna má vliv jenom na programy vytvořené pomocí sady Visual Studio 2019 verze 16.2 a novější. Pokud chcete použít starší chování zaokrouhlení s plovoucí desetinou čárkou, použijte odkaz na legacy_stdio_float_rounding.obj.
Mapování rutin obecného textu
Rutina Tchar.h | _UNICODE a _MBCS není definován |
_MBCS definovaný |
_UNICODE definovaný |
---|---|---|---|
_sctprintf_p |
_scprintf_p |
_scprintf_p |
_scwprintf_p |
_sctprintf_p_l |
_scprintf_p_l |
_scprintf_p_l |
_scwprintf_p_l |
Požadavky
Rutina | Požadovaný hlavičkový soubor |
---|---|
_scprintf_p , _scprintf_p_l |
<stdio.h> |
_scwprintf_p , _scwprintf_p_l |
<stdio.h> nebo <wchar.h> |
Další informace o kompatibilitě najdete v tématu Kompatibilita.
Viz také
Vstupně-výstupní operace streamu
_scprintf
, _scprintf_l
, , _scwprintf
_scwprintf_l
_printf_p
, _printf_p_l
, , _wprintf_p
_wprintf_p_l