C ++ snprintf () - C ++ Standardbibliotek

Funktionen snprintf () i C ++ används för att skriva en formaterad sträng till teckensträngbuffert.

Till skillnad från sprintf () anges maximalt antal tecken som kan skrivas till bufferten i snprintf().

snprintf () prototyp

 int snprintf (char * buffert, size_t buf_size, const char * format, …);

Den snprintf()funktionen skriver strängen pekas ut av format till buffert. Det maximala antalet tecken som kan skrivas är (buf_size-1).

Efter att tecknen har skrivits läggs ett avslutande nulltecken till. Om buf_size är lika med noll skrivs ingenting och buffert kan vara en nollpekare.

Det definieras i rubrikfilen.

snprintf () Parametrar

  • buffert: pekare till strängbuffert för att skriva resultatet.
  • buf_size: Ange maximalt antal tecken som ska skrivas till buffert som är buf_size-1.
  • format: Pekare till en null-avslutad sträng som skrivs till filströmmen. Den består av tecken tillsammans med valfria formatspecifikationer som börjar med%.

    Formatspecifikationerna ersätts av värdena för respektive variabler som följer formatsträngen.

    Formatspecifikatorn har följande delar:

    • Ett ledande% -tecken
    • Flaggor: Valfri en eller flera flaggor som ändrar konverteringsbeteendet.
      • -: Vänster motivera resultatet inom fältet. Som standard är det rätt motiverat.
      • +: Tecknet på resultatet är fäst vid början av värdet, även för positiva resultat.
      • Mellanslag: Om det inte finns något tecken, fästs ett mellanslag till början av resultatet.
      • #: En alternativ form för konvertering utförs.
      • 0: Det används för heltal och flytande nummer. Ledande nollor används för att lägga in siffrorna istället för mellanslag.
    • Bredd: Ett valfritt * eller heltal som används för att ange minsta breddfält.
    • Precision: Ett valfritt fält som består av en. följt av * eller heltal eller ingenting för att specificera precisionen.
    • Längd: En valfri längdmodifierare som anger argumentets storlek.
    • Specifier: En konverteringsformatspecifikator. De tillgängliga formatspecifikationerna är följande:
      Format Specifier Beskrivning
      % Skriver ut%
      c Skriver en enda karaktär
      s Skriver en teckensträng
      d eller i Konverterar ett signerat heltal till decimalrepresentation
      o Konverterar ett osignerat heltal till oktalrepresentation
      X eller x Konverterar ett osignerat heltal till hexadecimal representation
      u Konverterar ett osignerat heltal till decimalrepresentation
      F eller f Konverterar flyttalsnummer till decimalrepresentationen
      E eller e Konverterar flytande nummer till decimal exponentnotation
      A eller a Konverterar flyttal till hexadecimalt exponent
      G eller g Konverterar flytpunktsnummer till antingen decimal- eller decimaleksponentnotation
      n Återställer antalet tecken som hittills har skrivits av detta samtal till funktionen. Resultatet skrivs till det värde som argumentet pekar på
      sid Skriver en implementeringsdefinierad teckenföljd som definierar en pekare.

      Så det allmänna formatet för formatspecifikatorn är: %(flags)(width)(.precision)(length)specifier

  • …: Andra ytterligare argument som anger de data som ska skrivas ut. De förekommer i en sekvens enligt formatspecifikatorn.

snprintf () Returvärde

Om det lyckas snprintf()returnerar funktionen antalet tecken som skulle ha skrivits för tillräckligt stor buffert exklusive det avslutande nollkaraktären. Vid fel returnerar det ett negativt värde.

Utgången anses vara skriven helt om och endast om det returnerade värdet är icke-negativt och mindre än buf_size.

Exempel: Hur funktionen snprintf () fungerar

 #include #include using namespace std; int main() ( char buffer(100); int retVal, buf_size = 100; char name() = "Max"; int age = 23; retVal = snprintf(buffer, buf_size, "Hi, I am %s and I am %d years old", name, age); if (retVal> 0 && retVal < buf_size) ( cout << buffer << endl; cout << "Number of characters written = " << retVal << endl; ) else cout << "Error writing to buffer" << endl; return 0; )

När du kör programmet blir resultatet:

 Hej, jag är Max och jag är 23 år gammal Antal tecken skrivna = 34

Intressanta artiklar...