scanf, _scanf_l, wscanf, _wscanf_l
Odczyt sformatowane dane z Standardowy strumień wejściowy.Bezpieczniejsze wersje tych funkcji są dostępne; see scanf_s, _scanf_s_l, wscanf_s, _wscanf_s_l.
int scanf(
const char *format [,
argument]...
);
int _scanf_l(
const char *format,
locale_t locale [,
argument]...
);
int wscanf(
const wchar_t *format [,
argument]...
);
int _wscanf_l(
const wchar_t *format,
locale_t locale [,
argument]...
);
Parametry
format
Ciąg formatu formantu.argument
Argumentów opcjonalnych.locale
Ustawienia regionalne używane.
Wartość zwracana
Zwraca liczbę pól pomyślnie przekonwertowane i przypisane; zwracana wartość nie zawiera pola, które były odczytać, ale nie są przypisane.Zwracana wartość wynosząca 0 wskazuje, że przydzielono żadnych pól.
Jeśli format jest NULL wskaźnik, program obsługi nieprawidłowy parametr jest wywoływana, zgodnie z opisem w Sprawdzanie poprawności parametru.Jeśli wykonanie może kontynuować, funkcje te zwracają EOF i errno do EINVAL.
Aby uzyskać informacje o tych i innych kodów błędów, zobacz _doserrno, errno, _sys_errlist i _sys_nerr.
Uwagi
scanf Funkcja odczytuje dane z Standardowy strumień wejściowy stdin i zapisuje dane do lokalizacji określonej przez argument.Każdy argument musi być wskaźnik do zmiennej typu, który odpowiada specyfikatora typu w format.Jeśli kopiowanie odbywa się między ciągami, które nakładają się, zachowanie jest niezdefiniowane.
Uwaga dotycząca zabezpieczeń |
---|
Podczas czytania ciąg znaków z scanf, zawsze określić szerokość dla %s format (na przykład, "%32s" zamiast "%s"); w przeciwnym razie niewłaściwie sformatowany dane wejściowe mogą łatwo spowodować przepełnienie buforu.Alternatywnie, należy rozważyć użycie scanf_s, _scanf_s_l, wscanf_s, _wscanf_s_l lub fgets. |
wscanfjest ona szerokich znaków do scanf; format argument wscanf jest ciągiem szerokich znaków.wscanfi scanf zachowują się identycznie, jeśli strumień jest otwarty w trybie ANSI.scanfaktualnie nie obsługuje dane wejściowe ze strumienia UNICODE.
Wersje te funkcje za pomocą _l sufiks są identyczne z tym, że używają przekazany zamiast bieżących ustawień regionalnych wątek parametr ustawień regionalnych.
Tekst rodzajowy rutynowych mapowania
TCHAR.Rozpoczęto wykonywanie procedury h |
_UNICODE & _MBCS nie zdefiniowany |
_MBCS, definicja |
_UNICODE, definicja |
---|---|---|---|
_tscanf |
scanf |
scanf |
wscanf |
_tscanf_l |
_scanf_l |
_scanf_l |
_wscanf_l |
Aby uzyskać więcej informacji, zobacz pól specyfikacji formatu — scanf funkcje jak i wscanf.
Wymagania
Rozpoczęto wykonywanie procedury |
Wymaganego nagłówka |
---|---|
scanf, _scanf_l |
<stdio.h> |
wscanf, _wscanf_l |
<stdio.h> lub <wchar.h> |
Konsola nie jest obsługiwana w Windows Store aplikacji.Związanych z konsolą, dojścia do strumienia standard stdin, stdout, i stderr, muszą być przeniesione, aby funkcje uruchomieniowej C mogą być użyte w Windows Store aplikacji.Aby uzyskać dodatkowe informacje o zgodności, zobacz zgodności we wprowadzeniu.
Przykład
// crt_scanf.c
// compile with: /W3
/* This program uses the scanf and wscanf functions
* to read formatted input.
*/
#include <stdio.h>
int main( void )
{
int i, result;
float fp;
char c, s[81];
wchar_t wc, ws[81];
result = scanf( "%d %f %c %C %80s %80S", &i, &fp, &c, &wc, s, ws ); // C4996
// Note: scanf and wscanf are deprecated; consider using scanf_s and wscanf_s
printf( "The number of fields input is %d\n", result );
printf( "The contents are: %d %f %c %C %s %S\n", i, fp, c, wc, s, ws);
result = wscanf( L"%d %f %hc %lc %80S %80ls", &i, &fp, &c, &wc, s, ws ); // C4996
wprintf( L"The number of fields input is %d\n", result );
wprintf( L"The contents are: %d %f %C %c %hs %s\n", i, fp, c, wc, s, ws);
}
Odpowiednik w programie .NET Framework
Zobacz też Parse metod, takich jak System::Double::Parse.
Zobacz też
Informacje
fscanf — przetwarza dane, _fscanf_l, fwscanf, _fwscanf_l
printf, _printf_l, wprintf, _wprintf_l