Udostępnij za pośrednictwem


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ń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ż

Informacje

Wsparcie zmiennoprzecinkowe

Strumień we/wy

Ustawienia regionalne

fscanf — przetwarza dane, _fscanf_l, fwscanf, _fwscanf_l

printf, _printf_l, wprintf, _wprintf_l

sprintf, _sprintf_l, swprintf, _swprintf_l, __swprintf_l

sscanf, _sscanf_l, swscanf, _swscanf_l