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