Sdílet prostřednictvím


sscanf, _sscanf_l, , swscanf_swscanf_l

Čtení formátovaných dat z řetězce K dispozici jsou bezpečnější verze těchto funkcí; viz sscanf_s, _sscanf_s_l, swscanf_s, _swscanf_s_l.

Syntaxe

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á data

format
Řetězec řízení formátu Další informace naleznete v tématu Syntaxe specifikace formátu.

argument
Volitelné argumenty

locale
Národní prostředí, které se má použít

Vrácená hodnota

Každá z těchto funkcí vrátí počet polí úspěšně převedených a přiřazených; návratová hodnota neobsahuje pole, která byla přečtená, ale nepřiřazená. Vrácená hodnota 0 označuje, že nebyla přiřazena žádná pole. Vrácená hodnota je EOF pro chybu nebo pokud je dosaženo konce řetězce před prvním převodem.

Pokud buffer nebo format je NULL ukazatel, vyvolá se 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

Funkce sscanf čte data z buffer umístění zadaného jednotlivými argumentfunkcemi . Každý argument musí být ukazatel na proměnnou s typem, který odpovídá specifikátoru typu v format. Argument format řídí interpretaci vstupních polí a má stejný tvar a funkci jako format argument funkce scanf . Pokud probíhá kopírování mezi řetězci, které se překrývají, chování není definováno.

Informace o znaky pole typu scanf naleznete v části scanf Znaky pole typu. Informace o polích specifikace formátu scanf naleznete v tématu Pole specifikace formátu.

Důležité

Při čtení řetězce s řetězcem sscanfvždy zadejte šířku formátu %s (například "%32s" místo "%s"); jinak nesprávně formátovaný vstup může snadno způsobit přetečení vyrovnávací paměti.

swscanf je verze širokého znaku sscanf; argumenty, které mají swscanf být řetězce širokého znaku. sscanf nezpracuje vícebajtové šestnáctkové znaky. swscanf nezpracuje šestnáctkové znaky unicode s plnou šířkou nebo "zónou kompatibility". swscanf V opačném případě se sscanf chovejte stejně.

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.

Mapování rutin obecného textu

TCHAR.H rutina _UNICODE a _MBCS není definován _MBCS definovaný _UNICODE definovaný
_stscanf sscanf sscanf swscanf
_stscanf_l _sscanf_l _sscanf_l _swscanf_l

Požadavky

Rutina Požadovaný hlavičkový soubor
sscanf, _sscanf_l <stdio.h>
swscanf, _swscanf_l <stdio.h> nebo <wchar.h>

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

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 );
}
String    = 15
Character = 1
Integer:  = 15
Real:     = 15.000000

Viz také

Vstupně-výstupní operace streamu
fscanf, _fscanf_l, , fwscanf_fwscanf_l
scanf, _scanf_l, , wscanf_wscanf_l
sprintf, _sprintf_l, swprintf, , _swprintf_l__swprintf_l
snprintf, _snprintf, _snprintf_l, , _snwprintf_snwprintf_l