Sdílet prostřednictvím


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

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