vfscanf
, vfwscanf
Legge i dati formattati da un flusso. Sono disponibili versioni più sicure di queste funzioni; vedere vfscanf_s
, vfwscanf_s
.
Sintassi
int vfscanf(
FILE *stream,
const char *format,
va_list argptr
);
int vfwscanf(
FILE *stream,
const wchar_t *format,
va_list argptr
);
Parametri
stream
Puntatore alla struttura FILE
.
format
Stringa di controllo del formato.
arglist
Elenco di argomenti variabili.
Valore restituito
Ognuna di queste funzioni restituisce il numero di campi che vengono convertiti e assegnati correttamente. Il valore restituito non include campi letti ma non assegnati. Un valore restituito pari a 0 indica che nessun campo è stato assegnato. In caso di errore o se viene raggiunta la fine del flusso di file prima della prima conversione, il valore restituito è EOF
per vfscanf
e vfwscanf
.
Queste funzioni convalidano i relativi parametri. Se stream
o format
è un puntatore Null, viene richiamato il gestore di parametri non validi, come descritto in Convalida dei parametri. Se l'esecuzione può continuare, queste funzioni restituiscono EOF
e impostano errno
su EINVAL
.
Osservazioni:
La funzione vfscanf
legge i dati dalla posizione corrente di stream
nelle posizioni specificate dall'elenco di argomenti arglist
. Ogni argomento nell'elenco deve essere un puntatore a una variabile di un tipo corrispondente a un identificatore di tipo in format
. format
controlla l'interpretazione dei campi di input e ha la stessa forma e funzione dell'argomento format
per scanf
. Per una descrizione di format
, vedere scanf
.
vfwscanf
è una versione a caratteri wide di vfscanf
. L'argomento del formato per vfwscanf
è una stringa di caratteri wide. Queste funzioni si comportano in modo identico se il flusso viene aperto in modalità ANSI. vfscanf
non supporta l'input da un flusso UNICODE.
Mapping di routine di testo generico
Routine TCHAR.H | _UNICODE e _MBCS non definito |
_MBCS definito |
_UNICODE definito |
---|---|---|---|
_vftscanf |
vfscanf |
vfscanf |
vfwscanf |
Per altre informazioni, vedere Formattare i campi delle specifiche: scanf
e wscanf
le funzioni.
Requisiti
Funzione | Intestazione obbligatoria |
---|---|
vfscanf |
<stdio.h> |
vfwscanf |
<stdio.h> o <wchar.h> |
Per altre informazioni sulla compatibilità, vedere Compatibility (Compatibilità).
Esempio
// 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
Vedi anche
I/O di flusso
_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