vscanf
, vwscanf
Odczytuje sformatowane dane ze standardowego strumienia wejściowego. Dostępne są bezpieczniejsze wersje tych funkcji; zobacz vscanf_s
, vwscanf_s
.
Składnia
int vscanf(
const char *format,
va_list arglist
);
int vwscanf(
const wchar_t *format,
va_list arglist
);
Parametry
format
Formatuj ciąg sterujący.
arglist
Lista argumentów zmiennej.
Wartość zwracana
Zwraca liczbę pól, które zostały pomyślnie przekonwertowane i przypisane; wartość zwracana nie zawiera pól, które zostały odczytane, ale nie zostały przypisane. Wartość zwracana 0 wskazuje, że żadne pola nie zostały przypisane.
Jeśli format
jest wskaźnikiem NULL
, wywoływana jest nieprawidłowa procedura obsługi parametrów, zgodnie z opisem w temacie Weryfikacja parametrów. Jeśli wykonanie jest dozwolone do kontynuowania, te funkcje zwracają EOF
i ustawiają wartość errno
EINVAL
.
Aby uzyskać informacje o tych i innych kodach błędów, zobacz errno
, _doserrno
, _sys_errlist
i _sys_nerr
.
Uwagi
Funkcja vscanf
odczytuje dane ze standardowego strumienia stdin
wejściowego i zapisuje dane w lokalizacjach, które są podane przez arglist
listę argumentów. Każdy argument na liście musi być wskaźnikiem do zmiennej typu odpowiadającej specyfikatorowi typu w programie format
. Jeśli kopiowanie odbywa się między nakładającymi się ciągami, zachowanie jest niezdefiniowane.
Ważne
Podczas odczytywania vscanf
ciągu należy zawsze określić szerokość formatu %s (na przykład "%32s" zamiast "%s"), w przeciwnym razie niepoprawnie sformatowane dane wejściowe mogą spowodować przepełnienie buforu. Alternatywnie możesz użyć polecenia vscanf_s
, vwscanf_s
lub fgets
.
vwscanf
jest wersją szerokoznakową ; vscanf
argument to format
vwscanf
ciąg o szerokim znaku. vwscanf
i vscanf
zachowuje się identycznie, jeśli strumień jest otwarty w trybie ANSI. vscanf
nie obsługuje danych wejściowych ze strumienia UNICODE.
Mapowania procedur tekstu ogólnego
Procedura TCHAR.H | _UNICODE i _MBCS niezdefiniowane |
_MBCS zdefiniowany |
_UNICODE zdefiniowany |
---|---|---|---|
_vtscanf |
vscanf |
vscanf |
vwscanf |
Aby uzyskać więcej informacji, zobacz Pola specyfikacji formatu: scanf
i wscanf
funkcje.
Wymagania
Procedura | Wymagany nagłówek |
---|---|
vscanf |
<stdio.h> |
vwscanf |
<stdio.h> lub <wchar.h> |
Konsola nie jest obsługiwana w aplikacjach platformy platforma uniwersalna systemu Windows (UWP). Standardowe dojścia strumienia skojarzone z konsolą programu stdin
, stdout
i i stderr
muszą zostać przekierowane, zanim funkcje czasu wykonywania języka C będą mogły ich używać w aplikacjach platformy UWP. Aby uzyskać więcej informacji o zgodności, zobacz Zgodność.
Przykład
// crt_vscanf.c
// compile with: /W3
// This program uses the vscanf and vwscanf functions
// to read formatted input.
#include <stdio.h>
#include <stdarg.h>
int call_vscanf(char *format, ...)
{
int result;
va_list arglist;
va_start(arglist, format);
result = vscanf(format, arglist);
va_end(arglist);
return result;
}
int call_vwscanf(wchar_t *format, ...)
{
int result;
va_list arglist;
va_start(arglist, format);
result = vwscanf(format, arglist);
va_end(arglist);
return result;
}
int main( void )
{
int i, result;
float fp;
char c, s[81];
wchar_t wc, ws[81];
result = call_vscanf( "%d %f %c %C %80s %80S", &i, &fp, &c, &wc, s, ws );
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 = call_vwscanf( L"%d %f %hc %lc %80S %80ls", &i, &fp, &c, &wc, s, ws );
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);
}
71 98.6 h z Byte characters
36 92.3 y n Wide charactersThe number of fields input is 6
The contents are: 71 98.599998 h z Byte characters
The number of fields input is 6
The contents are: 36 92.300003 y n Wide characters
Zobacz też
Obsługa obliczeń matematycznych i zmiennoprzecinkowych
We/Wy strumienia
ustawienia regionalne
fscanf
, , _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
vscanf_s
, vwscanf_s