sscanf, _sscanf_l, swscanf, _swscanf_l
Čtení formátovaná data z řetězce.Bezpečnější verze tyto funkce jsou k dispozici; see sscanf_s, _sscanf_s_l, swscanf_s, _swscanf_s_l.
int sscanf(
const char *buffer,
const char *format [,
argument ] ...
);
int _sscanf_l(
const char *buffer,
const char *format,
locale_t locale [,
argument ] ...
);
int swscanf(
const wchar_t *buffer,
const wchar_t *format [,
argument ] ...
);
int _swscanf_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 na EINVAL.
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 Funkci čtení dat z buffer do skladového místa daný každou argument.Každý argument musí být ukazatel k proměnné typu, který odpovídá specifikátor typu v format.format Argument ovládací prvky výklad vstupní pole a stejné formuláře a pracovat jako format argument scanf funkce.Kopírování uskutečňuje mezi řetězce, které se překrývají, chování nedefinovaná.
Poznámka k zabezpečení |
---|
Při čtení řetězec s sscanf, vždy zadejte šířku %s formátu (například "%32s" namísto "%s"); jinak nesprávně formátovaný vstup snadno způsobit přetečení vyrovnávací paměti. |
swscanfje verze celého znaku sscanf; argumenty swscanf jsou celý znak řetězce.sscanfnezpracovává vícebajtové znaky v šestnáctkové soustavě.swscanfzpracovává plné šestnáctkové kódování Unicode nebo znaky "kompatibility zóna".Jinak swscanf a sscanf 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 |
sscanf |
sscanf |
swscanf |
_stscanf_l |
_sscanf_l |
_sscanf_l |
_swscanf_l |
Požadavky
Rutina |
Požadované záhlaví |
---|---|
sscanf, _sscanf_l |
<stdio.h> |
swscanf, _swscanf_l |
<stdio.h> nebo <wchar.h> |
Další informace o kompatibilitě, viz Compatibility v úvodu.
Příklad
// crt_sscanf.c
// compile with: /W3
// This program uses sscanf to read data items
// from a string named tokenstring, then displays them.
#include <stdio.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:
sscanf( tokenstring, "%80s", s ); // C4996
sscanf( tokenstring, "%c", &c ); // C4996
sscanf( tokenstring, "%d", &i ); // C4996
sscanf( tokenstring, "%f", &fp ); // C4996
// Note: sscanf is deprecated; consider using sscanf_s instead
// Output the data read
printf( "String = %s\n", s );
printf( "Character = %c\n", c );
printf( "Integer: = %d\n", i );
printf( "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