C ++ vsprintf () - standardní knihovna C ++

Funkce vsprintf () v C ++ se používá k zápisu formátovaného řetězce do vyrovnávací paměti řetězce.

prototyp vsprintf ()

 int vsprintf (char * buffer, const char * format, va_list vlist); 

vsprintf()Funkce zapíše řetězec odkazuje formátu do znakového řetězce vyrovnávací paměti. Formát řetězce může obsahovat specifikátory formátu začínající na%, které jsou nahrazeny hodnotami proměnných, které jsou předávány jako seznam vlist.

Je definován v hlavičkovém souboru.

Parametry vsprintf ()

  • buffer: Ukazatel na řetězec znaků, který zapíše výsledek.
  • formát: Ukazatel na řetězec s nulovým zakončením, který je zapsán do proudu souboru. Skládá se ze znaků a volitelných specifikátorů formátu začínajících na%.

    Specifikátory formátu jsou nahrazeny hodnotami příslušných proměnných, které následují za formátovacím řetězcem.

    Specifikátor formátu má následující části:

    • Přední znak%
    • Příznaky: Volitelný jeden nebo více příznaků, které upravují chování převodu.
      • -: Vlevo zarovná výsledek v poli. Ve výchozím nastavení je to správně zarovnané.
      • +: Znaménko výsledku je připojeno na začátek hodnoty, a to i pro pozitivní výsledky.
      • Mezera: Pokud není žádná značka, na začátek výsledku se připojí mezera.
      • #: Je provedena alternativní forma převodu.
      • 0: Používá se pro celé číslo a číslo s plovoucí desetinnou čárkou. K vyplnění čísel místo mezery se používají úvodní nuly.
    • Šířka: Volitelná * nebo celočíselná hodnota použitá k určení pole minimální šířky.
    • Přesnost: Volitelné pole skládající se z a. následuje * nebo celé číslo nebo nic k určení přesnosti.
    • Délka: Volitelný modifikátor délky, který určuje velikost argumentu.
    • Specifikátor: Specifikátor formátu převodu. Dostupné specifikátory formátu jsou následující:
      Specifikátor formátu Popis
      % Tisky%
      C Zapíše jeden znak
      s Zapíše řetězec znaků
      d nebo i Převede celé číslo se znaménkem na desítkové vyjádření
      Ó Převede celé číslo bez znaménka na osmičkovou reprezentaci
      X nebo x Převede celé číslo bez znaménka na šestnáctkové vyjádření
      u Převede celé číslo bez znaménka na desítkové vyjádření
      F nebo f Převede číslo s plovoucí desetinnou čárkou na desítkové vyjádření
      E nebo e Převede číslo s plovoucí desetinnou čárkou na desítkovou notaci exponentu
      A nebo a Převede číslo s plovoucí desetinnou čárkou na hexadecimální exponent
      G nebo g Převede číslo s plovoucí desetinnou čárkou na desítkovou nebo desítkovou notaci
      n Vrátí počet znaků doposud zapsaných tímto voláním funkce. Výsledek se zapíše na hodnotu, na kterou odkazuje argument
      p Zapíše posloupnost znaků definovanou implementací definující ukazatel.

      Obecný formát specifikátoru formátu je tedy: %(flags)(width)(.precision)(length)specifier

  • vlist: Seznam argumentů obsahujících data k zápisu.

vsprintf () Vrátit hodnotu

Pokud je úspěšná, vsprintf()funkce vrátí počet zapsaných znaků. Při selhání vrátí zápornou hodnotu.

Příklad: Jak funguje funkce vsprintf ()

 #include #include void write(char* buf, const char *fmt,… ) ( va_list args; va_start(args, fmt); vsprintf(buf, fmt, args); va_end(args); ) int main () ( char buffer(100); char fname(20) = "Bjarne"; char lname(20) = "Stroustrup"; char lang(5) = "C++"; write(buffer, "%s was created by %s %s", lang, fname, lname); printf("%s", buffer); return 0; )

Když spustíte program, výstup bude:

 C ++ vytvořil Bjarne Stroustrup

Zajímavé články...