C ++ sprintf () - C ++ - vakiokirjasto

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

sprintf () -prototyyppi

 int sprintf (char * puskuri, const char * muoto,…);

sprintf()Toiminto kirjoittaa merkkijonoa osoitteen sivulle muotoon puskuri. Merkkijonomuoto voi sisältää% -alkuiset muotoilut, jotka korvataan sprintf()funktiolle lisäargumentteina välitettävien muuttujien arvoilla .

Se määritetään otsikkotiedostossa.

sprintf () -parametrit

  • puskuri: Osoitin merkkijonopuskuriin kirjoittamaan tuloksen.
  • 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

  • …: Muut lisäväitteet, jotka määrittelevät tulostettavat tiedot. Ne esiintyvät järjestyksessä muodon määrittelijän mukaan.

sprintf () Palautusarvo

  • Jos se onnistuu, sprintf()funktio palauttaa merkkien määrän, joka olisi kirjoitettu riittävän suurelle puskurille lukuun ottamatta lopetettavaa nollamerkkiä.
  • Epäonnistumisen yhteydessä se palauttaa negatiivisen arvon.

Esimerkki: Kuinka sprintf () -toiminto toimii

 #include #include using namespace std; int main() ( char buffer(100); int retVal; char name() = "Max"; int age = 23; retVal = sprintf(buffer, "Hi, I am %s and I am %d years old", name, age); cout << buffer << endl; cout << "Number of characters written = " << retVal << endl; return 0; )

Kun suoritat ohjelmaa, tulos on:

 Hei, olen Max ja olen 23-vuotias kirjoitettujen merkkien lukumäärä = 34

Mielenkiintoisia artikkeleita...