vwscanf, vfwscanf, vswscanf, vwscanf_s, vfwscanf_s, vswscanf_s
| Definiert in Header <wchar.h>
|
||
int vwscanf( const wchar_t *restrict format, va_list vlist );
|
(1) | (seit C99) |
int vfwscanf( FILE *restrict stream,
const wchar_t *restrict format, va_list vlist );
|
(2) | (seit C99) |
int vswscanf( const wchar_t *restrict buffer,
const wchar_t *restrict format, va_list vlist );
|
(3) | (seit C99) |
int vwscanf_s( const wchar_t *restrict format, va_list vlist );
|
(4) | (seit C11) |
int vfwscanf_s( FILE *restrict stream,
const wchar_t *restrict format, va_list vlist );
|
(5) | (seit C11) |
int vswscanf_s( const wchar_t *restrict buffer,
const wchar_t *restrict format, va_list vlist );
|
(6) | (seit C11) |
Liest Daten aus verschiedenen Quellen, interpretiert sie gemäß format und speichert die Ergebnisse in den durch vlist definierten Speicherorten.
stream.buffer. Das Erreichen des Endes der Zeichenkette entspricht dem Erreichen der Dateiende-Bedingung für fwscanf%c, %s und %[ jeweils zwei Argumente erwarten (den üblichen Zeiger und einen Wert vom Typ rsize_t, der die Größe des empfangenden Arrays angibt, der 1 sein kann, wenn mit %lc in ein einzelnes breites Zeichen gelesen wird) und außer dass die folgenden Fehler zur Laufzeit erkannt werden und die derzeit installierte Constraint-Handler-Funktion aufrufen:
- jedes Argument vom Zeigertyp ist ein Nullzeiger
format,stream, oderbufferist ein Nullzeiger- die Anzahl der Zeichen, die durch %c, %s oder %[ geschrieben würden, plus das abschließende Nullzeichen, würde das zweite (rsize_t) Argument überschreiten, das für jeden dieser Konvertierungsspezifizierer bereitgestellt wird
- optional jeder andere erkennbare Fehler, wie z.B. unbekannter Konvertierungsspezifizierer
- Wie bei allen grenzgeprüften Funktionen sind
vwscanf_s,vfwscanf_sundvswscanf_snur garantiert verfügbar, wenn__STDC_LIB_EXT1__von der Implementierung definiert ist und der Benutzer__STDC_WANT_LIB_EXT1__auf die ganzzahlige Konstante1setzt, bevor <stdio.h> eingebunden wird.
Parameter
| stream | - | Eingabedateistrom zum Lesen |
| buffer | - | Zeiger auf eine nullterminierte breite Zeichenkette, aus der gelesen wird |
| format | - | Zeiger auf eine nullterminierte breite Zeichenkette, die angibt, wie die Eingabe gelesen werden soll |
| vlist | - | variable Argumentliste, die die empfangenden Argumente enthält. |
Die format-Zeichenkette besteht aus
- Nicht-Leerraum-breiten Zeichen außer
%: Jedes solche Zeichen in der Formatzeichenkette verbraucht genau ein identisches Zeichen aus dem Eingabestrom oder führt dazu, dass die Funktion fehlschlägt, wenn das nächste Zeichen im Strom nicht gleich ist. - Leerraumzeichen: Ein einzelnes Leerraumzeichen in der Formatzeichenkette verbraucht alle verfügbaren aufeinanderfolgenden Leerraumzeichen aus der Eingabe (bestimmt, als ob iswspace in einer Schleife aufgerufen würde). Beachten Sie, dass es keinen Unterschied zwischen
"\n"," ","\t\t"oder anderen Leerraumzeichen in der Formatzeichenkette gibt. - Konvertierungsspezifikationen. Jede Konvertierungsspezifikation hat das folgende Format:
- Einleitendes
%-Zeichen.
- Einleitendes
- (optional) Zuweisungsunterdrückungszeichen
*. Wenn diese Option vorhanden ist, weist die Funktion das Ergebnis der Konvertierung keinem empfangenden Argument zu.
- (optional) Zuweisungsunterdrückungszeichen
- (optional) Eine ganze Zahl (größer als null), die die maximale Feldbreite angibt, d.h. die maximale Anzahl von Zeichen, die die Funktion bei der Konvertierung gemäß der aktuellen Konvertierungsspezifikation verbrauchen darf. Beachten Sie, dass
%sund%[zu einem Pufferüberlauf führen können, wenn die Breite nicht angegeben ist.
- (optional) Eine ganze Zahl (größer als null), die die maximale Feldbreite angibt, d.h. die maximale Anzahl von Zeichen, die die Funktion bei der Konvertierung gemäß der aktuellen Konvertierungsspezifikation verbrauchen darf. Beachten Sie, dass
- (optional) Längenmodifikator, der die Größe des empfangenden Arguments angibt, d.h. den tatsächlichen Zieltyp. Dies beeinflusst die Konvertierungsgenauigkeit und die Überlaufregeln. Der Standard-Zieltyp ist für jeden Konvertierungstyp unterschiedlich (siehe Tabelle unten).
- Konvertierungsformat-Spezifizierer.
Die folgenden Formatspezifizierer sind verfügbar:
| Konvertierungs spezifizierer |
Erklärung | Erwarteter Argumenttyp | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Längenmodifikator→ | hh
|
h
|
keiner | l
|
ll
|
j
|
z
|
t
|
L
| |
| Nur seit C99 verfügbar→ | Ja | Ja | Ja | Ja | Ja | |||||
%
|
Entspricht literalem
%. |
N/V | N/V | N/V | N/V | N/V | N/V | N/V | N/V | N/V |
c
|
Entspricht einem Zeichen oder einer Folge von Zeichen.
|
N/V | N/V | char* |
wchar_t* |
N/V | N/V | N/V | N/V | N/V |
s
|
Entspricht einer Folge von Nicht-Leerraumzeichen (eine Zeichenkette).
| |||||||||
[set ]
|
Entspricht einer nicht leeren Folge von Zeichen aus der set-Menge von Zeichen.
| |||||||||
d
|
Entspricht einer Dezimalzahl.
|
signed char* oder unsigned char* |
signed short* oder unsigned short* |
signed int* oder unsigned int* |
signed long* oder unsigned long* |
signed long long* oder unsigned long long* |
intmax_t* oder uintmax_t* |
size_t* |
ptrdiff_t* |
N/V |
b (C23)
|
Entspricht einer vorzeichenlosen Binärzahl.
| |||||||||
i
|
Entspricht einer ganzen Zahl.
| |||||||||
u
|
Entspricht einer vorzeichenlosen Dezimalzahl.
| |||||||||
o
|
Entspricht einer vorzeichenlosen Oktalzahl.
| |||||||||
xX
|
Entspricht einer vorzeichenlosen Hexadezimalzahl.
| |||||||||
n
|
Gibt die Anzahl der bisher gelesenen Zeichen zurück.
| |||||||||
a (C99)A (C99)eEfF (C99)gG
|
Entspricht einer Gleitkommazahl.
|
N/V | N/V | float* |
double* |
N/V | N/V | N/V | N/V | long double* |
p
|
Entspricht einer implementierungsdefinierten Zeichenfolge, die einen Zeiger definiert.
|
-Format-Spezifizierers erzeugen. | N/V | void** |
N/V | N/V | N/V | N/V | N/V | N/V |
| Anmerkungen | ||||||||||
|
Für jeden Konvertierungsspezifizierer außer Mit Ausnahme des Alle Konvertierungsspezifizierer außer Wenn der Längenspezifizierer Die Konvertierungsspezifizierer Die korrekten Konvertierungsspezifikationen für die Ganzzahltypen mit fester Breite (int8_t, usw.) sind im Header <inttypes.h> definiert (obwohl SCNdMAX, SCNuMAX, usw. synonym zu Es gibt einen Sequenzpunkt nach der Aktion jedes Konvertierungsspezifizierers; dies ermöglicht das Speichern mehrerer Felder in derselben „Senken“-Variable. Beim Parsen eines unvollständigen Gleitkommawerts, der im Exponenten ohne Ziffern endet, wie z.B. beim Parsen von Wenn eine Konvertierungsspezifikation ungültig ist, ist das Verhalten undefiniert. | ||||||||||
Rückgabewert
Anmerkungen
Alle diese Funktionen können va_arg aufrufen, der Wert von arg ist nach der Rückgabe unbestimmt. Diese Funktionen rufen va_end nicht auf; dies muss vom Aufrufer erfolgen.
Beispiel
| Dieser Abschnitt ist unvollständig Grund: kein Beispiel |
Referenzen
- C11-Standard (ISO/IEC 9899:2011):
- 7.29.2.6 Die vfwscanf-Funktion (S. 418)
- 7.29.2.8 Die vswscanf-Funktion (S. 419)
- 7.29.2.10 Die vwscanf-Funktion (S. 420)
- K.3.9.1.7 Die vfwscanf_s-Funktion (S. 632-633)
- K.3.9.1.10 Die vswscanf_s-Funktion (S. 635-636)
- K.3.9.1.12 Die vwscanf_s-Funktion (S. 637)
- C99-Standard (ISO/IEC 9899:1999):
- 7.24.2.6 Die vfwscanf-Funktion (S. 364)
- 7.24.2.8 Die vswscanf-Funktion (S. 365)
- 7.24.2.10 Die vwscanf-Funktion (S. 366)
Siehe auch
(C95)(C95)(C95)(C11)(C11)(C11) |
liest formatierte breite Zeicheneingabe von stdin, einem Dateistrom oder einem Puffer (Funktion) |
C++-Dokumentation für vwscanf, vfwscanf, vswscanf
| |