Condividi tramite


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. formatcontrolla 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