C ++ vfwscanf () - Standardna knjižnica C ++

Funkcija vfwscanf () v jeziku C ++ se uporablja za branje širokega znakovnega niza iz datotečnega toka.

Funkcija vfwscanf () je definirana v datoteki glave.

prototip vfwscanf ()

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

Funkcija vfwscanf () bere podatke iz toka datotečnega toka in shranjuje vrednosti na ustrezna mesta, kot jih določa vlist.

vfwscanf () Parametri

  • stream: vnesite tok datoteke, iz katerega želite brati podatke.
  • format: Kazalec na ničelni niz širokega znaka, ki določa način branja vnosa. Sestavljen je iz specifikatorjev formata, ki se začnejo z%.
    Niz oblike vsebuje naslednje dele:
    • Nebeli presledki, razen%, od katerih vsak porabi en enak znak iz vhodnega toka. Funkcija lahko odpove, če se naslednji znak v toku ne primerja enako.
    • Presledek: Vsi zaporedni presledki se obravnavajo kot posamezni presledki. Poleg tega se šteje, da ", t" in "" enaki.
    • Specifikacija pretvorbe: Sledi naslednji obliki:
      • Začetni znak%, ki določa začetek
      • Izbirni *, imenovan znak za preprečevanje dodelitve. Če je ta znak prisoten, vfwscanf () ne dodeli rezultata nobenemu prejemnemu argumentu.
      • Izbirno pozitivno celo število, ki določa največjo širino polja. Določa največje število znakov, ki ga sme vfwscanf () porabiti pri pretvorbi, določeni s trenutno specifikacijo pretvorbe.
      • Izbirni modifikator dolžine, ki določa velikost sprejemnega argumenta.
      • Specifikator pretvorbenega formata.
    Specifikatorji formatov
    Format Specifier Opis
    % Ujema se z dobesednim%
    c Ujema se z enim ali več znaki. Če je širina definirana, se natančno ujema s širinami.
    s Ujema se z zaporednimi znaki, ki niso presledki. Če je širina določena, se natančno ujema s širinskimi znaki ali dokler ne najdemo prvega presledka.
    (nastavljeno) Ujema se s praznim zaporedjem znakov iz danega nabora znakov. Če je na začetku nabora, se ujemajo vsi znaki, ki niso v naboru.
    d Ujema se z decimalnim celim številom.
    jaz Ujema se s celim številom.
    o Ujema se z nepodpisanim osmiškim številom.
    X ali x Ujema se s šestnajstiškim neštetim celim številom.
    u Ujema se z nepodpisanim decimalnim celim številom.
    A ali a, E ali e, F ali f, G ali g Ujema se s številom s plavajočo vejico.
    n Vrne število doslej prebranih znakov.
    str Ujema se z zaporedjem znakov, definiranim z izvedbo, ki definira kazalec.

    Tako je splošna oblika specifikatorja oblike:
     Specifikator% (*) (width) (length)
  • vlist: seznam argumentov za prejemanje vhodov.

vfwscanf () Vrnjena vrednost

  • Če je funkcija vfwscanf () uspešna, vrne število uspešno prebranih argumentov.
  • V primeru okvare se vrne EOF.

Primer: Kako deluje funkcija 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; )

Ko zaženete program, bo možen izhod:

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

Zanimive Članki...