C ++ vsscanf () - C ++ - vakiokirjasto

C ++: n vsscanf () -funktiota käytetään tietojen lukemiseen merkkijonopuskurista.

Vsscanf () -toiminto määritetään otsikkotiedostossa.

vsscanf () -prototyyppi

 int vsscanf (const char * puskuri, const char * muoto, va_list vlist);

Funktio vsscanf () lukee tiedot merkkijonopuskuripuskurista ja tallentaa arvot vastaaviin paikkoihin, kuten vlist määrittelee.

vsscanf () -parametrit

  • muoto: Osoitin nollapäätteiseen 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ä, vsscanf () ei lisää tulosta mihinkään vastaanottavaan argumenttiin.
      • Valinnainen positiivinen kokonaisluku, joka määrittää kentän enimmäisleveyden. Se määrittää merkkien enimmäismäärän, jonka vsscanf () saa kuluttaa tehdessään nykyisen muunnosmäärityksen mukaisen muunnoksen.
      • Valinnainen pituusmuunnin, joka määrittää vastaanottavan argumentin koon.
      • Muunnosmuodon määrittelijä.
    Muotomäärittimet
    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.

vsscanf () Palautusarvo

  • Jos se onnistuu, vsscanf () -funktio palauttaa onnistuneesti luettujen argumenttien määrän.
  • EOF palautuu epäonnistumisen yhteydessä.

Esimerkki: Kuinka vsscanf () -toiminto toimii?

 #include #include void read(const char* buf, const char * format,… ) ( va_list args; va_start (args, format); vsscanf (buf, format, args); va_end (args); ) int main () ( char buffer(100) = "Bruce Wayne Batman"; char fname(20), lname(20), superhero(20); read(buffer, "%s %s %s", fname, lname, superhero); printf("%s %s is %s.", fname, lname, superhero); return 0; )

Kun suoritat ohjelmaa, mahdollinen tulos on:

 Bruce Wayne on Batman.

Mielenkiintoisia artikkeleita...