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 daneformat
Ciąg formatu formantu.Aby uzyskać więcej informacji, zobacz Specyfikacji formatu.argument
Opcjonalne argumentylocale
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
fscanf — przetwarza dane, _fscanf_l, fwscanf, _fwscanf_l
scanf, _scanf_l, wscanf, _wscanf_l