Freigeben über


vfscanf, vfwscanf

Liest formatierte Daten aus einem Stream. Sicherere Versionen dieser Funktionen sind verfügbar. Informationen dazu finden Sie unter vfscanf_s, vfwscanf_s.

Syntax

int vfscanf(
   FILE *stream,
   const char *format,
   va_list argptr
);
int vfwscanf(
   FILE *stream,
   const wchar_t *format,
   va_list argptr
);

Parameter

stream
Zeiger zur FILE -Struktur.

format
Formatsteuerzeichenfolge.

arglist
Variablenargumentenliste.

Rückgabewert

Jede dieser Funktionen gibt die Anzahl der Felder zurück, die erfolgreich konvertiert und zugewiesen wurden. Der Rückgabewert enthält keine Felder, die gelesen, aber nicht zugewiesen sind. Ein Rückgabewert von 0 gibt an, dass keine Felder zugewiesen wurden. Wenn ein Fehler auftritt oder das Ende des Dateistreams vor der ersten Konvertierung erreicht wird, ist der Rückgabewert EOF für vfscanf und vfwscanf.

Diese Funktionen überprüfen ihre Parameter. Wenn stream es sich um format einen Nullzeiger handelt, wird der ungültige Parameterhandler aufgerufen, wie in der Parameterüberprüfung beschrieben. Wenn die weitere Ausführung zugelassen wird, geben diese Funktionen EOF zurück und stellen errno auf EINVAL ein.

Hinweise

Die vfscanf-Funktion liest Daten aus der aktuellen Position von stream in die Speicherorte ein, die von der arglist-Argumentliste angegeben werden. Jedes Argument in der Liste muss ein Zeiger auf einen Variablentyp sein, der einem Typspezifizierer in format entspricht. format steuert die Interpretation der Eingabefelder und weist dasselbe Formular und dieselbe Funktion wie das format Argument scanfauf ; siehe scanf eine Beschreibung von format.

vfwscanf ist eine Breitzeichenversion von vfscanf. Das vfwscanf-Formatargument ist eine Breitzeichenfolge. Diese Funktionen verhalten sich identisch, wenn der Stream im ANSI-Modus geöffnet ist. vfscanf unterstützt nicht die Eingabe aus einem UNICODE-Stream.

Mapping generischer Textroutinen

TCHAR.H-Routine _UNICODE und _MBCS nicht definiert _MBCS definiert _UNICODE definiert
_vftscanf vfscanf vfscanf vfwscanf

Weitere Informationen finden Sie unter "Formatspezifikationsfelder: scanf und wscanf Funktionen".

Anforderungen

Funktion Erforderlicher Header
vfscanf <stdio.h>
vfwscanf <stdio.h> oder <wchar.h>

Weitere Informationen zur Kompatibilität finden Sie unter Kompatibilität.

Beispiel

// 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

Siehe auch

Stream-E/A
_cscanf, , _cscanf_l_cwscanf_cwscanf_l
fprintf, , _fprintf_lfwprintf_fwprintf_l
scanf, , _scanf_lwscanf_wscanf_l
sscanf, , _sscanf_lswscanf_swscanf_l
fscanf_s, , _fscanf_s_lfwscanf_s_fwscanf_s_l
vfscanf_s, vfwscanf_s