sscanf_s, _sscanf_s_l, swscanf_s, _swscanf_s_l
Čtení formátovaná data z řetězce.Tyto verze jsou sscanf, _sscanf_l, swscanf, _swscanf_l s vylepšení zabezpečení popsaným v Funkce zabezpečení v CRT.
int sscanf_s(
const char *buffer,
const char *format [,
argument ] ...
);
int _sscanf_s_l(
const char *buffer,
const char *format,
locale_t locale [,
argument ] ...
);
int swscanf_s(
const wchar_t *buffer,
const wchar_t *format [,
argument ] ...
);
int _swscanf_s_l(
const wchar_t *buffer,
const wchar_t *format,
locale_t locale [,
argument ] ...
);
Parametry
buffer
Uložená dataformat
Řetězec formátu řízení.Další informace naleznete v tématu Specifikace formátu.argument
Volitelné argumentylocale
Použití národního prostředí
Vrácená hodnota
Každá z těchto funkcí vrátí počet polí úspěšně převedena a přiřazeny; Vrácená hodnota neobsahuje pole, které byly číst, ale nejsou přiřazeny.Vrácená hodnota 0 označuje, že byla přiřazena žádná pole.Vrácená hodnota je EOF chybová zpráva nebo pokud je dosaženo konce řetězce před prvním převodu.
Pokud buffer nebo format je NULL vyvolat ukazatel neplatný parametr popisovače, jak je popsáno v Ověření parametrů.Pokud je povoleno spuštění pokračovat, vrátí tyto funkce hodnotu -1 a errno naEINVAL
Informace o těchto a jiných kódů chyb naleznete v tématu _doserrno, kód chyby, _sys_errlist a _sys_nerr.
Poznámky
sscanf_s Funkci čtení dat z buffer do skladového místa daný každou argument.Argumenty po řetězce formátu určují ukazatele na proměnné typu, který odpovídá specifikátor typu v format.Na rozdíl od méně bezpečnou verzi sscanf, při použití znaků typu pole je požadován parametr velikosti vyrovnávací paměti c, C, s, S a [.Velikost vyrovnávací paměti v znaky musí být dodány jako dodatečný parametr po každé vyrovnávací paměti, která ji vyžaduje.Další informace naleznete v tématu scanf_s, _scanf_s_l, wscanf_s, _wscanf_s_l a scanf znaky pole Typ.
[!POZNÁMKA]
Typ parametru velikosti je unsigned, není size_t.
format Argument ovládací prvky výklad vstupní pole a stejné formuláře a pracovat jako format argument scanf_s funkce.Kopírování uskutečňuje mezi řetězce, které se překrývají, chování nedefinovaná.
swscanf_sje verze celého znaku sscanf_s; argumenty swscanf_s jsou celý znak řetězce.sscanf_snezpracovává vícebajtové znaky v šestnáctkové soustavě.swscanf_snezpracovává šestnáctkové Unicode celou šířku nebo znaky "kompatibility zóna".Jinak swscanf_s a sscanf_s se chovají stejně.
Verze těchto funkcí se _l přípony jsou shodné s výjimkou, že používají národní prostředí parametr předaný namísto aktuální podproces národní prostředí.
Obecný Text rutinní mapování
TCHAR.Rutina H |
_UNICODE & _MBCS není definován |
_MBCS, definice |
_UNICODE, definice |
---|---|---|---|
_stscanf_s |
sscanf_s |
sscanf_s |
swscanf_s |
_stscanf_s_l |
_sscanf_s_l |
_sscanf_s_l |
_swscanf_s_l |
Požadavky
Rutina |
Požadované záhlaví |
---|---|
sscanf_s, _sscanf_s_l |
<stdio.h> |
swscanf_s, _swscanf_s_l |
<stdio.h> nebo <wchar.h> |
Další informace o kompatibilitě, viz Compatibility v úvodu.
Příklad
// crt_sscanf_s.c
// This program uses sscanf_s to read data items
// from a string named tokenstring, then displays them.
#include <stdio.h>
#include <stdlib.h>
int main( void )
{
char tokenstring[] = "15 12 14...";
char s[81];
char c;
int i;
float fp;
// Input various data from tokenstring:
// max 80 character string plus NULL terminator
sscanf_s( tokenstring, "%s", s, _countof(s) );
sscanf_s( tokenstring, "%c", &c, sizeof(char) );
sscanf_s( tokenstring, "%d", &i );
sscanf_s( tokenstring, "%f", &fp );
// Output the data read
printf_s( "String = %s\n", s );
printf_s( "Character = %c\n", c );
printf_s( "Integer: = %d\n", i );
printf_s( "Real: = %f\n", fp );
}
Ekvivalent v rozhraní .NET Framework
Viz Parse metod, jako například System::Double::Parse.
Viz také
Referenční dokumentace
fscanf, _fscanf_l, fwscanf, _fwscanf_l
scanf, _scanf_l, wscanf, _wscanf_l