C ++ vfwscanf () - C ++ szabványos könyvtár

A vfwscanf () függvény a C ++ fájlban széles karakterlánc olvasására szolgál egy fájlfolyamból.

A vfwscanf () függvény a fejlécfájlban van meghatározva.

vfwscanf () prototípus

 int vfwscanf (FÁJL * adatfolyam, const wchar_t * formátum, va_list vlist);

A vfwscanf () függvény beolvassa az adatokat a fájlfolyamból, és az értékeket a vlist által meghatározott megfelelő helyekre tárolja.

vfwscanf () Paraméterek

  • adatfolyam: Adatfolyam beírása az adatok olvasására.
  • formátum: Egy nullával végződő széles karakterlánc mutatója, amely meghatározza a bemenet olvasásának módját. A% kezdetű formátum-specifikátorokból áll.
    A formátum karaktersorozat a következő részekkel rendelkezik:
    • Nem fehér szóköz karakterek, kivéve%, amelyek mindegyike egyforma karaktert emészt fel a bemeneti adatfolyamból. A funkció meghibásodását okozhatja, ha a folyam következő karaktere nem hasonlít egyenlőre.
    • Fehér szóköz: Az egymást követő fehér szóköz karaktereket egyetlen szóköz karakterként kezeljük. Ezenkívül a ' n', ' t' és a '' azonosak.
    • Konverzió specifikáció: A következő formátumot követi:
      • Kezdő% karakter, amely meghatározza a kezdetet
      • Opcionális * nevű hozzárendelést elnyomó karakter. Ha ez a karakter szerepel, akkor a vfwscanf () nem hozzárendeli az eredményt egyetlen fogadó argumentumhoz sem.
      • Opcionális pozitív egész szám, amely meghatározza a mező maximális szélességét. Megadja a maximális karakterszámot, amelyet a vfwscanf () használhat az aktuális konverziós specifikáció által meghatározott átalakítás során.
      • Opcionális hosszúság-módosító, amely meghatározza a fogadó argumentum méretét.
      • Konverziós formátum-specifikátor.
    Formátum specifikátorok
    Formátummeghatározó Leírás
    % Megfelel a szó szerinti% -nak
    c Egy vagy több karaktert illeszt. Ha a szélesség van megadva, akkor pontosan megegyezik a szélességű karakterekkel.
    s Megfelel az egymást követő nem fehér szóköz karaktereknek. Ha a szélesség van megadva, akkor pontosan megegyezik a szélességű karakterekkel, vagy addig, amíg az első szóköz nem található.
    (készlet) A megadott karakterkészlet nem üres karaktersorozata. Ha a halmaz elején van ^, akkor a halmazban nem szereplő összes karakter egyezik.
    d Tizedes egész számot illeszt.
    én Megfelel egy egész számnak.
    o Egyezik az előjel nélküli oktális egész számmal.
    X vagy x Egyezik az aláíratlan hexadecimális egész számmal.
    u Egyezik az aláíratlan tizedes egész számmal.
    A vagy a, E vagy e, F vagy f, G vagy g Megfelel egy lebegőpontos számnak.
    n Visszaadja az eddig elolvasott karakterek számát.
    o Megfelel egy megvalósítás által definiált karakterláncnak, amely meghatároz egy mutatót.

    Tehát a formátummeghatározó általános formátuma:
     % (*) (szélesség) (hossz) specifikátor
  • vlist: A bemenetek fogadásához szükséges argumentumok listája.

vfwscanf () Visszatérési érték

  • Sikeres esetben a vfwscanf () függvény visszaadja a sikeresen elolvasott argumentumok számát.
  • Meghibásodás esetén az EOF visszatér.

Példa: Hogyan működik a vfwscanf () függvény?

 #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; )

A program futtatásakor egy lehetséges kimenet lesz:

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

érdekes cikkek...