Sdílet prostřednictvím


_scprintf, _scprintf_l, _scwprintf, _scwprintf_l

Vrátí počet znaků ve formátovaném řetězci.

Syntaxe

int _scprintf(
   const char *format [,
   argument] ...
);
int _scprintf_l(
   const char *format,
   _locale_t locale [,
   argument] ...
);
int _scwprintf(
   const wchar_t *format [,
   argument] ...
);
int _scwprintf_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

Další informace naleznete v tématu Syntaxe specifikace formátu.

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 provede stejnou funkci pro široké znaky.

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 EINVALhodnotu .

Informace o těchto a dalších kódech chyb naleznete v tématu , , , a_sys_nerr . _sys_errlist_doserrnoerrno

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 Definovány _UNICODE Definovány
_sctprintf _scprintf _scprintf _scwprintf
_sctprintf_l _scprintf_l _scprintf_l _scwprintf_l

Požadavky

Rutina Požadovaný hlavičkový soubor
_scprintf, _scprintf_l <stdio.h>
_scwprintf, _scwprintf_l <stdio.h> nebo <wchar.h>

Další informace o kompatibilitě najdete v tématu Kompatibilita.

Příklad

// crt__scprintf.c

#define _USE_MATH_DEFINES

#include <stdio.h>
#include <math.h>
#include <malloc.h>

int main( void )
{
   int count;
   int size;
   char *s = NULL;

   count = _scprintf( "The value of Pi is calculated to be %f.\n",
                      M_PI);

   size = count + 1; // the string will need one more char for the null terminator
   s = malloc(sizeof(char) * size);
   sprintf_s(s, size, "The value of Pi is calculated to be %f.\n",
                      M_PI);
   printf("The length of the following string will be %i.\n", count);
   printf("%s", s);
   free( s );
}
The length of the following string will be 46.
The value of Pi is calculated to be 3.141593.

Viz také

Vstupně-výstupní operace streamu
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 – funkce