Udostępnij za pośrednictwem


sscanf_s, _sscanf_s_l, swscanf_s, _swscanf_s_l

Odczyt sformatowane dane z ciągu znaków.Są to wersje sscanf, _sscanf_l, swscanf, _swscanf_l z rozszerzeń zabezpieczeń opisane w Funkcje zabezpieczeń w 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
    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 doEINVAL

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

Uwagi

sscanf_s Funkcji odczytuje dane z buffer do lokalizacji określonej przez każdą argument.Argumenty po ciągu formatu określ wskaźniki do zmiennych z typem, który odpowiada specyfikatora typu w format.W przeciwieństwie do mniej bezpieczna wersja sscanf, parametr rozmiar buforu jest wymagany, jeśli przy użyciu znaków pola typu c, C, s, S i [.Rozmiar buforu w znaki muszą być dostarczone jako dodatkowy parametr po każdej buforu, która go wymaga.Aby uzyskać więcej informacji, zobacz scanf_s, _scanf_s_l, wscanf_s, _wscanf_s_l i scanf znaki pola typu.

[!UWAGA]

Parametr rozmiaru jest typu unsigned, nie size_t.

format Argument formanty interpretacji danych wejściowych pola i ma ten sam formularz i działać jako format argument dla scanf_s funkcji.Jeśli kopiowanie odbywa się między ciągami, które się pokrywają, zachowanie jest niezdefiniowane.

swscanf_sjest to wersja szerokich znaków sscanf_s; argumenty do swscanf_s są ciągami znaków wide.sscanf_snie obsługuje wielobajtowych znaków szesnastkowych.swscanf_snie obsługuje Unicode pełną szerokość szesnastkowym lub znaki "zgodności strefa".W przeciwnym razie swscanf_s i sscanf_s 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_s

sscanf_s

sscanf_s

swscanf_s

_stscanf_s_l

_sscanf_s_l

_sscanf_s_l

_swscanf_s_l

Wymagania

Rozpoczęto wykonywanie procedury

Wymaganego nagłówka

sscanf_s, _sscanf_s_l

<stdio.h>

swscanf_s, _swscanf_s_l

<stdio.h> lub <wchar.h>

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

Przykład

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

Odpowiednik w programie .NET Framework

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

Zobacz też

Informacje

Strumień we/wy

fscanf — przetwarza dane, _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