C ++ vsprintf () - C ++ - vakiokirjasto

C ++: n funktiota vsprintf () käytetään muotoilun merkkijonon kirjoittamiseen merkkijonopuskuriin.

vsprintf () -prototyyppi

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

vsprintf()Toiminto kirjoittaa merkkijonoa osoitteen sivulle muodossa merkkijonon puskurissa. Merkkijonomuoto voi sisältää muotomäärittimet, jotka alkavat%: lla ja jotka korvataan luettelomuodona siirrettävien muuttujien arvoilla.

Se määritetään otsikkotiedostossa.

vsprintf () -parametrit

  • puskuri: Osoitin merkkijonoon tuloksen kirjoittamiseksi.
  • muoto: Osoitin nollan päättyneelle merkkijonolle, joka kirjoitetaan tiedostovirtaan. Se koostuu merkeistä ja valinnaisista muotoilun määrittelijöistä, jotka alkavat%: lla.

    Formaatin määrittelijät korvataan vastaavien muuttujien arvoilla, jotka seuraavat muotomerkkijonoa.

    Formaatin määrittelijässä on seuraavat osat:

    • Johtava% -merkki
    • Liput: Valinnainen yksi tai useampi lippu, joka muuttaa konversiokäyttäytymistä.
      • -: Vasen tasaa tuloksen kentässä. Oletuksena se on oikein perusteltu.
      • +: Tuloksen merkki liitetään arvon alkuun, myös positiivisten tulosten saamiseksi.
      • Välilyönti: Jos merkkiä ei ole, tuloksen alkuun kiinnitetään välilyönti.
      • #: Vaihtoehtoinen muunnos suoritetaan.
      • 0: Sitä käytetään kokonaislukuun ja liukulukuihin. Numeroita käytetään välilyöntien sijasta etunollia.
    • Leveys: Valinnainen * tai kokonaislukuarvo, jota käytetään minimileveyskentän määrittämiseen.
    • Tarkkuus: Valinnainen kenttä, joka koostuu a. jota seuraa * tai kokonaisluku tai ei mitään tarkkuuden määrittämiseksi.
    • Pituus: Valinnainen pituuden muuttaja, joka määrittää argumentin koon.
    • Määritin: Muunnosmuodon määrittelijä. Saatavilla olevat muotomäärittimet ovat seuraavat:
      Formaatin määrittelijä Kuvaus
      % Tulosteet%
      c Kirjoittaa yhden merkin
      s Kirjoittaa merkkijonon
      d tai i Muuntaa allekirjoitetun kokonaisluvun desimaaliedustukseksi
      o Muuntaa allekirjoittamattoman kokonaisluvun oktaaliedustukseksi
      X tai x Muuntaa allekirjoittamattoman kokonaisluvun heksadesimaaliluvuksi
      u Muuntaa allekirjoittamattoman kokonaisluvun desimaaliedustukseksi
      F tai f Muuntaa liukuluvun desimaaliluvuksi
      E tai e Muuntaa liukuluvun desimaalilausekkeeksi
      A tai a Muuntaa liukuluvun luvun heksadesimaalilausekkeeksi
      G tai g Muuntaa liukuluvun desimaalin tai desimaalin eksponenttimerkinnäksi
      n Palauttaa tämän kutsun tähän mennessä kirjoittamien merkkien määrän funktioon. Tulos kirjoitetaan argumentin osoittamaan arvoon
      s Kirjoittaa toteutuksessa määritetyn merkkijonon, joka määrittelee osoittimen.

      Joten muodon määrittelijän yleinen muoto on: %(flags)(width)(.precision)(length)specifier

  • vlist: Luettelo argumenteista, jotka sisältävät kirjoitettavat tiedot.

vsprintf () Palautusarvo

Jos se onnistuu, vsprintf()funktio palauttaa kirjoitettujen merkkien määrän. Epäonnistumisen yhteydessä se palauttaa negatiivisen arvon.

Esimerkki: Kuinka vsprintf () -toiminto toimii

 #include #include void write(char* buf, const char *fmt,… ) ( va_list args; va_start(args, fmt); vsprintf(buf, fmt, args); va_end(args); ) int main () ( char buffer(100); char fname(20) = "Bjarne"; char lname(20) = "Stroustrup"; char lang(5) = "C++"; write(buffer, "%s was created by %s %s", lang, fname, lname); printf("%s", buffer); return 0; )

Kun suoritat ohjelmaa, tulos on:

 C ++: n loi Bjarne Stroustrup

Mielenkiintoisia artikkeleita...