C ++ vfwscanf () - C ++ Standardbibliothek

Die Funktion vfwscanf () in C ++ wird verwendet, um breite Zeichenfolgen aus einem Dateistream zu lesen.

Die Funktion vfwscanf () ist in der Header-Datei definiert.

vfwscanf () Prototyp

 int vfwscanf (FILE * stream, const wchar_t * format, va_list vlist);

Die Funktion vfwscanf () liest die Daten aus dem Dateistream-Stream und speichert die Werte an den jeweiligen Speicherorten, wie in vlist definiert.

vfwscanf () Parameter

  • stream: Geben Sie den Dateistream ein, aus dem die Daten gelesen werden sollen.
  • Format: Zeiger auf eine nullterminierte breite Zeichenfolge, die angibt, wie die Eingabe gelesen werden soll. Es besteht aus Formatbezeichnern, die mit% beginnen.
    Die Formatzeichenfolge besteht aus folgenden Teilen:
    • Nicht-Leerzeichen, außer%, von denen jedes ein identisches Zeichen aus dem Eingabestream verbraucht. Dies kann dazu führen, dass die Funktion fehlschlägt, wenn das nächste Zeichen im Stream nicht gleich ist.
    • Leerzeichen: Alle aufeinanderfolgenden Leerzeichen werden als einzelne Leerzeichen behandelt. Ferner werden ' n', ' t' und '' als gleich angesehen.
    • Konvertierungsspezifikation: Es folgt dem folgenden Format:
      • Anfangszeichen%, das den Anfang angibt
      • Ein optionales *, das als zuweisungsunterdrückendes Zeichen bezeichnet wird. Wenn dieses Zeichen vorhanden ist, weist vfwscanf () das Ergebnis keinem empfangenden Argument zu.
      • Eine optionale positive Ganzzahl, die die maximale Feldbreite angibt. Es gibt die maximale Anzahl von Zeichen an, die vfwscanf () bei der in der aktuellen Konvertierungsspezifikation angegebenen Konvertierung verwenden darf.
      • Ein optionaler Längenmodifikator, der die Größe des empfangenden Arguments angibt.
      • Ein Bezeichner für das Konvertierungsformat.
    Formatbezeichner
    Formatbezeichner Beschreibung
    %. Entspricht dem Literal%
    c Entspricht einem einzelnen Zeichen oder mehreren Zeichen. Wenn width definiert ist, entspricht dies genau den Zeichen für die Breite.
    s Entspricht aufeinanderfolgenden Nicht-Leerzeichen. Wenn width definiert ist, entspricht dies genau den Zeichen für die Breite oder bis das erste Leerzeichen gefunden wird.
    (einstellen) Entspricht einer nicht leeren Zeichenfolge aus dem angegebenen Zeichensatz. Wenn am Anfang des Satzes vorhanden ist, werden alle Zeichen, die nicht im Satz enthalten sind, abgeglichen.
    d Entspricht einer Dezimalzahl.
    ich Entspricht einer Ganzzahl.
    Ö Entspricht einer vorzeichenlosen oktalen Ganzzahl.
    X oder x Entspricht einer vorzeichenlosen hexadezimalen Ganzzahl.
    u Entspricht einer vorzeichenlosen Dezimalzahl.
    A oder a, E oder e, F oder f, G oder g Entspricht einer Gleitkommazahl.
    n Gibt die Anzahl der bisher gelesenen Zeichen zurück.
    p Entspricht einer implementierungsdefinierten Zeichenfolge, die einen Zeiger definiert.

    Das allgemeine Format des Formatbezeichners lautet also:
     % (*) (Breite) (Länge) Spezifizierer
  • vlist: Eine Liste von Argumenten für den Empfang der Eingaben.

vfwscanf () Rückgabewert

  • Bei Erfolg gibt die Funktion vfwscanf () die Anzahl der erfolgreich gelesenen Argumente zurück.
  • Bei einem Fehler wird EOF zurückgegeben.

Beispiel: Wie funktioniert die Funktion vfwscanf ()?

 #include #include #include #include void read( FILE *fp, const wchar_t* format,… ) ( va_list args; va_start (args, format); vfwscanf (fp, format, args); va_end (args); ) int main () ( setlocale(LC_ALL, "en_US.UTF-8"); wchar_t symbol() = L"u0915u0916u0917u0918u0919"; wchar_t names(5)(5) = (L"Ka", L"Kha", L"Ga", L"Gha", L"Nga"); FILE *fp = fopen("example.txt","w+"); for (int i=0; i<5; i++) fwprintf(fp, L"%lc %ls ", symbol(i), names(i)); rewind(fp); wchar_t ch, str(5); for (int i=0; i<5; i++) ( read(fp, L"%lc %ls ", &ch, str); wprintf(L"%lc - %ls", ch, str); ) fclose(fp); return 0; )

Wenn Sie das Programm ausführen, ist eine mögliche Ausgabe:

 क - Ka ख - Kha ग - Ga घ - Gha ङ - Nga

Interessante Beiträge...