C ++ sprintf () - C ++ standaardbibliotheek

De sprintf () -functie in C ++ wordt gebruikt om een ​​opgemaakte string naar de tekenreeksbuffer te schrijven.

sprintf () prototype

 int sprintf (char * buffer, const char * format, …);

De sprintf()functie schrijft de string waarnaar het formaat verwijst naar de buffer. Het tekenreeksformaat kan opmaakspecificaties bevatten die beginnen met%, die worden vervangen door de waarden van variabelen die sprintf()als aanvullende argumenten aan de functie worden doorgegeven .

Het wordt gedefinieerd in het header-bestand.

sprintf () Parameters

  • buffer: Pointer naar de stringbuffer om het resultaat te schrijven.
  • format: Pointer naar een met null beëindigde string die naar de bestandsstroom wordt geschreven. Het bestaat uit tekens samen met optionele indelingsspecificaties die beginnen met%.

    De formaatspecificaties worden vervangen door de waarden van de respectievelijke variabelen die volgen op de formaatreeks.

    De formaatspecificatie heeft de volgende onderdelen:

    • Een toonaangevend% -teken
    • Vlaggen: Optioneel een of meer vlaggen die het conversiegedrag wijzigen.
      • -: Links uitvullen van het resultaat binnen het veld. Standaard is het goed gerechtvaardigd.
      • +: Het teken van het resultaat wordt aan het begin van de waarde gehecht, zelfs voor positieve resultaten.
      • Spatie: als er geen teken is, wordt er een spatie aan het begin van het resultaat toegevoegd.
      • #: Er wordt een alternatieve vorm van conversie uitgevoerd.
      • 0: Het wordt gebruikt voor integer en drijvende-kommagetallen. Voorloopnullen worden gebruikt om de cijfers in plaats van de spatie te vullen.
    • Breedte: een optionele * of geheel getal die wordt gebruikt om een ​​veld met een minimale breedte op te geven.
    • Precisie: een optioneel veld bestaande uit een. gevolgd door * of geheel getal of niets om de precisie te specificeren.
    • Lengte: een optionele lengtemodificator die de grootte van het argument aangeeft.
    • Specifier: een specificatie van het conversieformaat. De beschikbare formaatspecificaties zijn als volgt:
      Formaatspecificatie Omschrijving
      % Afdrukken%
      c Schrijft een enkel teken
      s Schrijft een tekenreeks
      d of i Converteert een geheel getal met teken naar een decimale weergave
      O Converteert een geheel getal zonder teken naar een octale weergave
      X of x Converteert een geheel getal zonder teken naar een hexadecimale weergave
      u Converteert een geheel getal zonder teken naar een decimale weergave
      F of f Converteert een getal met een drijvende komma naar de decimale weergave
      E of e Converteert een getal met een drijvende komma naar de decimale exponentnotatie
      A of een Converteert drijvende-kommagetal naar de hexadecimale exponent
      G of g Converteert drijvende-kommagetal naar decimale of decimale exponentnotatie
      n Retourneert het aantal tekens dat tot dusver door deze aanroep naar de functie is geschreven. Het resultaat wordt geschreven naar de waarde waarnaar het argument verwijst
      p Schrijft een door de implementatie gedefinieerde tekenreeks die een pointer definieert.

      Dus het algemene formaat van de formaatspecificatie is: %(flags)(width)(.precision)(length)specifier

  • …: Andere aanvullende argumenten die de gegevens specificeren die moeten worden afgedrukt. Ze komen voor in een reeks volgens de formaatspecificatie.

sprintf () Retourwaarde

  • Als dit lukt, sprintf()retourneert de functie het aantal tekens dat zou zijn geschreven voor een voldoende grote buffer, exclusief het afsluitende null-teken.
  • Bij een storing wordt een negatieve waarde geretourneerd.

Voorbeeld: hoe sprintf () functie werkt

 #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; )

Wanneer u het programma uitvoert, is de uitvoer:

 Hallo, ik ben Max en ik ben 23 jaar. Aantal geschreven karakters = 34

Interessante artikelen...