C ++ snprintf () - C ++ Standardbibliotek

Funksjonen snprintf () i C ++ brukes til å skrive en formatert streng til tegnstrengebuffer.

I motsetning til sprintf () er maksimalt antall tegn som kan skrives til bufferen spesifisert i snprintf().

snprintf () prototype

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

Den snprintf()funksjonen skriver strengen peker til formatet til buffer. Maksimalt antall tegn som kan skrives er (buf_size-1).

Etter at tegnene er skrevet, legges det til et avslutende nulltegn. Hvis buf_size er lik null, skrives ingenting, og buffer kan være en nullpeker.

Det er definert i topptekstfilen.

snprintf () Parametere

  • buffer: peker til strengbufferen for å skrive resultatet.
  • buf_size: Angi maksimalt antall tegn som skal skrives til buffer som er buf_size-1.
  • format: peker til en null avsluttet streng som skrives til filstrømmen. Den består av tegn sammen med valgfrie formatspesifikatorer som begynner med%.

    Formatspesifikatorene erstattes av verdiene til respektive variabler som følger formatstrengen.

    Formatspesifikatoren har følgende deler:

    • Et ledende% tegn
    • Flagg: Valgfritt ett eller flere flagg som endrer konverteringsadferden.
      • -: Venstre rettferdiggjør resultatet innenfor feltet. Som standard er det rettferdiggjort.
      • +: Tegn på resultatet er festet til begynnelsen av verdien, selv for positive resultater.
      • Mellomrom: Hvis det ikke er noe tegn, er et mellomrom festet til begynnelsen av resultatet.
      • #: En alternativ form for konvertering utføres.
      • 0: Den brukes til heltall og flytende nummer. Ledende nuller brukes til å putte tallene i stedet for mellomrom.
    • Bredde: En valgfri * eller heltallverdi som brukes til å spesifisere minimumsbreddefelt.
    • Presisjon: Et valgfritt felt som består av en. etterfulgt av * eller heltall eller ingenting for å spesifisere presisjonen.
    • Lengde: En valgfri lengdemodifikator som spesifiserer størrelsen på argumentet.
    • Spesifikator: En konverteringsformatspesifikator. De tilgjengelige formatspesifikasjonene er som følger:
      Format Spesifikator Beskrivelse
      % Skriver ut%
      c Skriver et enkelt tegn
      s Skriver en karakterstreng
      d eller i Konverterer et signert heltall til desimalrepresentasjon
      o Konverterer et usignert heltall til oktal representasjon
      X eller x Konverterer et usignert heltall til heksadesimal representasjon
      u Konverterer et usignert heltall til desimalrepresentasjon
      F eller f Konverterer flytende nummer til desimalrepresentasjonen
      E eller e Konverterer flytende nummer til desimaleksponentnotasjonen
      A eller a Konverterer flytende nummer til den heksadesimale eksponenten
      G eller g Konverterer flytende nummer til enten desimal- eller desimaleksponentnotasjon
      n Returnerer antall tegn som hittil er skrevet av denne samtalen til funksjonen. Resultatet skrives til den verdien argumentet peker på
      s Skriver en implementeringsdefinert tegnsekvens som definerer en peker.

      Så det generelle formatet til formatspesifikatoren er: %(flags)(width)(.precision)(length)specifier

  • …: Andre tilleggsargumenter som spesifiserer dataene som skal skrives ut. De forekommer i en sekvens i henhold til formatet.

snprintf () Returverdi

Hvis det lykkes, snprintf()returnerer funksjonen antall tegn som ville blitt skrevet for tilstrekkelig stor buffer unntatt det avsluttende nulltegnet. Ved feil returnerer den en negativ verdi.

Produksjonen anses å være skrevet fullstendig hvis og bare hvis den returnerte verdien ikke er negativ og mindre enn buf_size.

Eksempel: Hvordan funksjonen snprintf () fungerer

 #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 kjører programmet, vil utdataene være:

 Hei, jeg er Max og jeg er 23 år. Antall tegn skrevet = 34

Interessante artikler...