Sdílet prostřednictvím


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

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

  • argument
    Volitelné argumenty

  • locale
    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

Proud I/O

fscanf, _fscanf_l, fwscanf, _fwscanf_l

scanf, _scanf_l, wscanf, _wscanf_l

sprintf, _sprintf_l, swprintf, _swprintf_l, __swprintf_l

_snprintf, _snprintf_l, _snwprintf, _snwprintf_l