Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Odczytuje sformatowane dane ze strumienia. Dostępne są bezpieczniejsze wersje tych funkcji; zobacz vfscanf_s
, vfwscanf_s
.
Składnia
int vfscanf(
FILE *stream,
const char *format,
va_list argptr
);
int vfwscanf(
FILE *stream,
const wchar_t *format,
va_list argptr
);
Parametry
stream
Wskaźnik do FILE
struktury.
format
Ciąg kontroli formatu.
arglist
Lista argumentów zmiennej.
Wartość zwracana
Każda z tych funkcji zwraca liczbę pól, które zostały pomyślnie przekonwertowane i przypisane. Wartość zwracana nie zawiera pól, które są odczytywane, ale nie są przypisane. Wartość zwracana 0 wskazuje, że żadne pola nie zostały przypisane. Jeśli wystąpi błąd lub gdy koniec strumienia plików zostanie osiągnięty przed pierwszą konwersją, zwracana wartość to EOF
i vfscanf
vfwscanf
.
Te funkcje weryfikują swoje parametry. Jeśli stream
lub format
jest wskaźnikiem o wartości null, wywoływana jest nieprawidłowa procedura obsługi parametrów, zgodnie z opisem w temacie Walidacja parametru. Jeśli wykonanie jest dozwolone do kontynuowania, te funkcje zwracają EOF
i ustawiają wartość errno
EINVAL
.
Uwagi
Funkcja vfscanf
odczytuje dane z bieżącej pozycji stream
do lokalizacji, 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
. format
steruje interpretacją pól wejściowych i ma ten sam formularz i funkcję co format
argument dla scanf
; zobacz scanf
opis .format
vfwscanf
jest wersją vfscanf
szerokoznakową ; argument formatu do vfwscanf
jest ciągiem o szerokim znaku. Te funkcje zachowują się identycznie, jeśli strumień jest otwarty w trybie ANSI. vfscanf
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 |
---|---|---|---|
_vftscanf |
vfscanf |
vfscanf |
vfwscanf |
Aby uzyskać więcej informacji, zobacz Pola specyfikacji formatu: scanf
i wscanf
funkcje.
Wymagania
Function | Wymagany nagłówek |
---|---|
vfscanf |
<stdio.h> |
vfwscanf |
<stdio.h> lub <wchar.h> |
Aby uzyskać więcej informacji o zgodności, zobacz Zgodność.
Przykład
// crt_vfscanf.c
// compile with: /W3
// This program writes formatted
// data to a file. It then uses vfscanf to
// read the various data back from the file.
#include <stdio.h>
#include <stdarg.h>
FILE *stream;
int call_vfscanf(FILE * istream, char * format, ...)
{
int result;
va_list arglist;
va_start(arglist, format);
result = vfscanf(istream, format, arglist);
va_end(arglist);
return result;
}
int main(void)
{
long l;
float fp;
char s[81];
char c;
if (fopen_s(&stream, "vfscanf.out", "w+") != 0)
{
printf("The file vfscanf.out was not opened\n");
}
else
{
fprintf(stream, "%s %ld %f%c", "a-string",
65000, 3.14159, 'x');
// Security caution!
// Beware loading data from a file without confirming its size,
// as it may lead to a buffer overrun situation.
// Set pointer to beginning of file:
fseek(stream, 0L, SEEK_SET);
// Read data back from file:
call_vfscanf(stream, "%s %ld %f%c", s, &l, &fp, &c);
// Output data read:
printf("%s\n", s);
printf("%ld\n", l);
printf("%f\n", fp);
printf("%c\n", c);
fclose(stream);
}
}
a-string
65000
3.141590
x
Zobacz też
We/Wy strumienia
_cscanf
, , _cscanf_l
, , _cwscanf
_cwscanf_l
fprintf
, , _fprintf_l
, , fwprintf
_fwprintf_l
scanf
, , _scanf_l
, , wscanf
_wscanf_l
sscanf
, , _sscanf_l
, , swscanf
_swscanf_l
fscanf_s
, , _fscanf_s_l
, , fwscanf_s
_fwscanf_s_l
vfscanf_s
, vfwscanf_s