C ++ sprintf () - Libreria standard C ++

La funzione sprintf () in C ++ viene utilizzata per scrivere una stringa formattata nel buffer delle stringhe di caratteri.

prototipo sprintf ()

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

La sprintf()funzione scrive nel buffer la stringa a cui punta il formato. Il formato della stringa può contenere identificatori di formato che iniziano con% che vengono sostituiti dai valori delle variabili che vengono passati alla sprintf()funzione come argomenti aggiuntivi.

È definito nel file di intestazione.

Parametri sprintf ()

  • buffer: puntatore al buffer di stringa per scrivere il risultato.
  • format: puntatore a una stringa terminata da null che viene scritta nel flusso di file. Consiste di caratteri insieme a identificatori di formato opzionali che iniziano con%.

    Gli identificatori di formato vengono sostituiti dai valori delle rispettive variabili che seguono la stringa di formato.

    L'identificatore di formato ha le seguenti parti:

    • Un segno di% iniziale
    • Flag: uno o più flag opzionali che modificano il comportamento di conversione.
      • -: Giustifica a sinistra il risultato all'interno del campo. Per impostazione predefinita è giustificato a destra.
      • +: Il segno del risultato viene aggiunto all'inizio del valore, anche in caso di risultati positivi.
      • Spazio: se non è presente alcun segno, viene aggiunto uno spazio all'inizio del risultato.
      • #: Viene eseguita una forma alternativa di conversione.
      • 0: viene utilizzato per numeri interi e in virgola mobile. Gli zeri iniziali vengono utilizzati per riempire i numeri anziché lo spazio.
    • Larghezza: un valore intero * o facoltativo utilizzato per specificare il campo di larghezza minima.
    • Precisione: un campo opzionale costituito da un file. seguito da * o intero o niente per specificare la precisione.
    • Lunghezza: un modificatore di lunghezza opzionale che specifica la dimensione dell'argomento.
    • Specifier: un identificatore del formato di conversione. Gli identificatori di formato disponibili sono i seguenti:
      Identificatore di formato Descrizione
      % Stampe%
      c Scrive un singolo carattere
      S Scrive una stringa di caratteri
      do i Converte un intero con segno in una rappresentazione decimale
      o Converte un intero senza segno in una rappresentazione ottale
      X o x Converte un intero senza segno in una rappresentazione esadecimale
      u Converte un intero senza segno in una rappresentazione decimale
      F o f Converte il numero a virgola mobile nella rappresentazione decimale
      E o e Converte il numero a virgola mobile nella notazione esponente decimale
      A o a Converte il numero a virgola mobile nell'esponente esadecimale
      G o g Converte il numero a virgola mobile in notazione esponente decimale o decimale
      n Restituisce il numero di caratteri scritti finora da questa chiamata alla funzione. Il risultato viene scritto nel valore puntato dall'argomento
      p Scrive una sequenza di caratteri definita dall'implementazione che definisce un puntatore.

      Quindi il formato generale dell'identificatore di formato è: %(flags)(width)(.precision)(length)specifier

  • …: Altri argomenti aggiuntivi che specificano i dati da stampare. Si verificano in una sequenza in base all'identificatore di formato.

sprintf () Restituisce il valore

  • In caso di esito positivo, la sprintf()funzione restituisce il numero di caratteri che sarebbero stati scritti per un buffer sufficientemente grande escluso il carattere null di terminazione.
  • In caso di fallimento restituisce un valore negativo.

Esempio: come funziona la funzione sprintf ()

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

Quando esegui il programma, l'output sarà:

 Ciao, sono Max e ho 23 anni Numero di caratteri scritti = 34

Articoli interessanti...