C ++ vfwscanf () - C ++ standardna biblioteka

Funkcija vfwscanf () u C ++u koristi se za čitanje širokog niza znakova iz struje datoteka.

Funkcija vfwscanf () definirana je u zaglavnoj datoteci.

prototip vfwscanf ()

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

Funkcija vfwscanf () čita podatke iz toka protoka datoteka i pohranjuje vrijednosti na odgovarajuća mjesta kako ih definira vlist.

vfwscanf () Parametri

  • stream: Unesite tok datoteke iz kojeg ćete čitati podatke.
  • format: pokazivač na nizak završeni široki niz znakova koji određuje način čitanja unosa. Sastoji se od specifikatora formata koji počinju s%.
    Niz formatiranja ima sljedeće dijelove:
    • Znakovi koji nisu razmaci, osim% koji svaki troši po jedan identičan znak iz ulaznog toka. To može uzrokovati neuspjeh funkcije ako se sljedeći znak u streamu ne usporedi.
    • Razmak: Znakovi razmaka uzastopno tretiraju se kao jedan razmak. Nadalje, ' n', ' t' i '' smatraju se istim.
    • Specifikacija pretvorbe: Slijedi sljedeći format:
      • Inicijalni% znak koji specificira početak
      • Izborni * koji se naziva znak za suzbijanje dodjele. Ako je prisutan ovaj znak, vfwscanf () ne dodjeljuje rezultat niti jednom argumentu primanja.
      • Izborni pozitivni cijeli broj koji specificira maksimalnu širinu polja. Određuje maksimalan broj znakova koji vfwscanf () smije unijeti prilikom izvršavanja pretvorbe određene trenutnom specifikacijom pretvorbe.
      • Izborni modifikator duljine koji specificira veličinu argumenta koji prima.
      • Specifikator formata pretvorbe.
    Specifikatori formata
    Specifikator formata Opis
    % Podudara se s doslovnim%
    c Podudara se s jednim znakom ili više znakova. Ako je širina definirana, točno se podudara sa znakovima širine.
    s Podudara se s uzastopnim znakovima koji nisu razmaci. Ako je širina definirana, točno se podudara sa znakovima širine ili dok se ne pronađe prvi razmak.
    (postavljeno) Podudara se s praznim nizom znakova iz zadanog skupa znakova. Ako je prisutan na početku skupa, tada se podudaraju svi znakovi koji nisu u skupu.
    d Podudara se s decimalnim cijelim brojem.
    ja Podudara se s cijelim brojem.
    o Podudara se s nepotpisanim osminski cijelim brojem.
    X ili x Podudara se s nepotpisanim heksadecimalnim cijelim brojem.
    u Podudara se s nepotpisanim decimalnim cijelim brojem.
    A ili a, E ili e, F ili f, G ili g Podudara se s brojem s pomičnom zarezom.
    n Vraća broj do sada pročitanih znakova.
    str Podudara se s implementacijom definiranim slijedom znakova koji definira pokazivač.

    Dakle, općeniti format specifikatora formata je:
     Specifikator% (*) (width) (length)
  • vlist: Popis argumenata za primanje ulaza.

vfwscanf () Povratna vrijednost

  • Ako je uspješna, funkcija vfwscanf () vraća broj uspješno pročitanih argumenata.
  • U slučaju neuspjeha, vraća se EOF.

Primjer: Kako funkcionira vfwscanf () funkcija?

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

Kada pokrenete program, mogući izlaz bit će:

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

Zanimljivi članci...