vscanf
, vwscanf
Liest formatierte Daten aus dem Standardeingabestream. Sicherere Versionen dieser Funktionen sind verfügbar. Informationen dazu finden Sie unter 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_errlist
und _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_s
oder 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.
Mapping generischer Textroutinen
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 UWP-Apps (Universelle Windows-Plattform) nicht unterstützt. Die mit der Konsole verknüpften Standardstreamhandles stdin
, stdout
und stderr
müssen umgeleitet werden, bevor sie von C-Laufzeitfunktionen in UWP-Apps verwendet werden 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 Unterstützung 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