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 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 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ń |
---|
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
fscanf, _fscanf_l, fwscanf, _fwscanf_l
scanf, _scanf_l, wscanf, _wscanf_l