Toimintoa vfwscanf () C ++: ssa käytetään lukemaan leveä merkkijono tiedostovirrasta.
Vfwscanf () -toiminto määritetään otsikkotiedostossa.
vfwscanf () -prototyyppi
int vfwscanf (FILE * stream, const wchar_t * format, va_list vlist);
Vfwscanf () -toiminto lukee tiedot tiedostovirrasta ja tallentaa arvot vastaaviin sijainteihin, kuten vlist määrittelee.
vfwscanf () -parametrit
- stream: Syötä tiedostovirta, josta tiedot voidaan lukea.
- muoto: Osoitin nollapäätteiseen laajaan merkkijonoon, joka määrittää, miten syötettä luetaan. Se koostuu muotomäärittimistä, jotka alkavat%: lla.
Formaatin merkkijonossa on seuraavat osat:- Muut kuin välilyönnit, paitsi%, joista kukin kuluttaa yhden identtisen merkin syöttövirrasta. Se voi aiheuttaa funktion epäonnistumisen, jos virran seuraava merkki ei ole yhtä suuri.
- Välilyönti-merkki: Kaikki peräkkäiset tyhjät-merkit käsitellään yhtenä tyhjänä -merkkinä. Lisäksi ' n', ' t' ja '' pidetään samoina.
- Muunnosmäärittely: Se noudattaa seuraavaa muotoa:
- Alkuperäinen% merkki, joka määrittää alun
- Valinnainen * nimeltään tehtävää tukahduttava merkki. Jos tämä merkki on läsnä, vfwscanf () ei määritä tulosta mihinkään vastaanottavaan argumenttiin.
- Valinnainen positiivinen kokonaisluku, joka määrittää kentän enimmäisleveyden. Se määrittää merkkien enimmäismäärän, jonka vfwscanf () saa kuluttaa tehdessään nykyisen muunnosmäärityksen mukaisen muunnoksen.
- Valinnainen pituusmuunnin, joka määrittää vastaanottavan argumentin koon.
- Muunnosmuodon määrittelijä.
Formaatin määrittelijä Kuvaus % Vastaa kirjaimellista% c Yhdistää yhden merkin tai useita merkkejä. Jos leveys on määritetty, vastaa täsmälleen leveysmerkkejä. s Vastaavat peräkkäisiä muita kuin välilyöntejä. Jos leveys on määritelty, vastaa täsmälleen leveysmerkkejä tai kunnes ensimmäinen välilyönti löytyy. (aseta) Vastaa ei-tyhjää merkkijonoa annetusta merkistöstä. Jos on joukon alussa, kaikki merkit, joita ei ole asetettu, vastaavat toisiaan. d Vastaa desimaalilukua. i Vastaa kokonaislukua. o Vastaa allekirjoittamatonta oktaalilukua. X tai x Vastaa allekirjoittamatonta heksadesimaalilukua. u Vastaa allekirjoittamatonta desimaalilukua. A tai a, E tai e, F tai f, G tai g Vastaa liukuluvun lukua. n Palauttaa tähän mennessä luettujen merkkien lukumäärän. s Vastaa toteutuksen määrittelemää merkkijonoa, joka määrittää osoittimen.
Joten muodon määrittelijän yleinen muoto on:% (*) (leveys) (pituus) määrittelijä
- vlist: Luettelo argumenteista syötteiden vastaanottamiseksi.
vfwscanf () Palautusarvo
- Jos se onnistuu, vfwscanf () -funktio palauttaa onnistuneesti luettujen argumenttien määrän.
- EOF palautuu epäonnistumisen yhteydessä.
Esimerkki: Kuinka vfwscanf () -toiminto toimii?
#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; )
Kun suoritat ohjelmaa, mahdollinen tulos on:
क - Ka ख - Kha ग - Ga घ - Gha ङ - Nga