Udostępnij za pośrednictwem


sscanf, _sscanf_l, swscanf, _swscanf_l

Odczyt sformatowane dane z ciągu znaków.Bezpieczniejsze wersje te funkcje są dostępne; 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
    Przechowywane dane

  • format
    Ciąg formatu formantu.Aby uzyskać więcej informacji, zobacz Specyfikacji formatu.

  • argument
    Opcjonalne argumenty

  • locale
    Ustawienia regionalne, aby użyć

Wartość zwracana

Każda z tych funkcji zwraca liczbę pól pomyślnie przekonwertowane i przypisany; zwracana wartość nie zawiera pól, które były odczytywane, ale nie jest przypisany.Zwracana wartość wynosząca 0 wskazuje, że zostały przypisane żadne pola.Zwracana jest wartość EOF w błąd lub jeśli przed pierwszym konwersji osiągnięty zostanie koniec ciągu.

Jeśli buffer lub format jest NULL obsługi nieprawidłowy parametr wskaźnika jest wywoływany, jak opisano w Sprawdzanie poprawności parametru.Jeśli wykonanie może kontynuować, funkcje te zwracają wartość -1 i errno do EINVAL.

Informacji na temat tych i innych kodów błędów, zobacz _doserrno, errno, _sys_errlist i _sys_nerr.

Uwagi

sscanf Funkcji odczytuje dane z buffer do lokalizacji określonej przez każdą argument.Każdy argument musi być wskaźnik do zmiennej o typie, który odpowiada specyfikatora typu w format.format Argument formanty interpretacji danych wejściowych pola i ma ten sam formularz i działać jako format argument dla scanf funkcji.Jeśli kopiowanie odbywa się między ciągami, które się pokrywają, zachowanie jest niezdefiniowane.

Uwaga dotycząca zabezpieczeńUwaga dotycząca zabezpieczeń

Jeśli czytasz ciąg składający się z sscanf, zawsze należy określać szerokość dla %s format (na przykład, "%32s" zamiast "%s"); w przeciwnym razie niewłaściwie sformatowany wprowadzania łatwo może spowodować przepełnienie buforu.

swscanfjest to wersja szerokich znaków sscanf; argumenty do swscanf są ciągami szerokich znaków.sscanfnie obsługuje wielobajtowych znaków szesnastkowych.swscanfnie obsługuje Unicode pełnej szerokooci w formacie szesnastkowym lub znaki "zgodności strefa".W przeciwnym razie swscanf i sscanf zachowują się identycznie.

Wersje te funkcje, z _l sufiks są identyczne, z wyjątkiem, że używają oni przekazany zamiast bieżące ustawienia regionalne wątku parametr ustawień regionalnych.

Tekst rodzajowy rutynowych mapowania

TCHAR.Rutynowe H

_UNICODE & Nie zdefiniowano _MBCS

_MBCS, definicja

_UNICODE, definicja

_stscanf

sscanf

sscanf

swscanf

_stscanf_l

_sscanf_l

_sscanf_l

_swscanf_l

Wymagania

Rozpoczęto wykonywanie procedury

Wymaganego nagłówka

sscanf, _sscanf_l

<stdio.h>

swscanf, _swscanf_l

<stdio.h> lub <wchar.h>

Aby uzyskać dodatkowe informacje o zgodności, zobacz zgodności we wprowadzeniu.

Przykład

// 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 );
}
  

Odpowiednik w programie .NET Framework

Zobacz Parse metod, takich jak System::Double::Parse.

Zobacz też

Informacje

We/Wy strumienia

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