Freigeben über


vscanf, vwscanf

Liest formatierte Daten aus dem Standardeingabestream. Sicherere Versionen dieser Funktionen sind verfügbar; siehe vscanf_s, vwscanf_s.

Syntax

int vscanf(
   const char *format,
   va_list arglist
);
int vwscanf(
   const wchar_t *format,
   va_list arglist
);

Parameter

format
Formatsteuerzeichenfolge.

arglist
Variablenargumentenliste.

Rückgabewert

Gibt die Anzahl der Felder zurück, die erfolgreich konvertiert und zugewiesen werden; Der Rückgabewert enthält keine Felder, die gelesen, aber nicht zugewiesen wurden. Ein Rückgabewert von 0 gibt an, dass keine Felder zugewiesen wurden.

Wenn format es sich um einen NULL Zeiger 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.

Informationen zu diesen und anderen Fehlercodes finden Sie unter , , _doserrno, _sys_errlistund _sys_nerr.errno

Hinweise

Die vscanf-Funktion liest Daten aus dem Standardeingabestream stdin und schreibt die Daten in die Speicherorte, die durch die arglist-Argumentliste angegeben werden. Jedes Argument in der Liste muss ein Zeiger auf einen Variablentyp sein, der einem Typspezifizierer in format entspricht. Wenn der Kopiervorgang zwischen Zeichenfolgen ausgeführt wird, die sich überschneiden, ist das Verhalten nicht definiert.

Wichtig

Wenn Sie eine Zeichenfolge lesen, geben Sie vscanf immer eine Breite für das Format %s an (z . B. "%32s" anstelle von "%s"); andernfalls kann eine falsch formatierte Eingabe zu einem Pufferüberlauf führen. Alternativ können Sie dies vwscanf_s auch verwenden vscanf_soder fgets.

vwscanf ist eine Breitzeichenversion von vscanf. Das format -Argument für vwscanf ist eine Breitzeichenfolge. vwscanf und vscanf verhalten sich identisch, wenn der Stream in ANSI-Modus geöffnet ist. vscanf unterstützt nicht die Eingabe aus einem UNICODE-Stream.

Generische Textroutinzuordnungen

TCHAR.H-Routine _UNICODE und _MBCS nicht definiert _MBCS Definiert _UNICODE Definiert
_vtscanf vscanf vscanf vwscanf

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

Anforderungen

Routine Erforderlicher Header
vscanf <stdio.h>
vwscanf <stdio.h> oder <wchar.h>

Die Konsole wird in Universelle Windows-Plattform -Apps (UWP) nicht unterstützt. Die Standardstreamhandles, die der Konsole zugeordnet sind, stdinstdoutund stderrmüssen umgeleitet werden, bevor C-Laufzeitfunktionen sie in UWP-Apps verwenden können. Weitere Informationen zur Kompatibilität finden Sie unter Kompatibilität.

Beispiel

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

Siehe auch

Mathematische und Gleitkommaunterstützung
Stream-E/A
Gebietsschema
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