Funzione libreria C - sprintf ()
Descrizione
La funzione di libreria C. int sprintf(char *str, const char *format, ...) invia l'output formattato a una stringa a cui punta, da str.
Dichiarazione
Di seguito è riportata la dichiarazione per la funzione sprintf ().
int sprintf(char *str, const char *format, ...)
Parametri
str - Questo è il puntatore a un array di elementi char in cui è memorizzata la stringa C risultante.
format- Questa è la stringa che contiene il testo da scrivere nel buffer. Opzionalmente può contenere tag di formato incorporati che vengono sostituiti dai valori specificati negli argomenti aggiuntivi successivi e formattati come richiesto. Prototipo di tag di formato:%[flags][width][.precision][length]specifier, come spiegato di seguito -
Sr.No. | Specifier e output |
---|---|
1 |
c Carattere |
2 |
d or i Numero intero decimale con segno |
3 |
e Notazione scientifica (mantissa / esponente) utilizzando il carattere e |
4 |
E Notazione scientifica (mantissa / esponente) utilizzando il carattere E |
5 |
f Virgola mobile decimale |
6 |
g Utilizza il più breve tra% e o% f. |
7 |
G Utilizza il più breve tra% E o% f |
8 |
o Firmato ottale |
9 |
s Stringa di caratteri |
10 |
u Numero intero decimale senza segno |
11 |
x Intero esadecimale senza segno |
12 |
X Intero esadecimale senza segno (lettere maiuscole) |
13 |
p Indirizzo del puntatore |
14 |
n Niente stampato |
15 |
% Carattere |
Sr.No. | Bandiere e descrizione |
---|---|
1 |
- Giustifica a sinistra entro la larghezza del campo data; La giustificazione a destra è l'impostazione predefinita (vedere il specificatore secondario della larghezza). |
2 |
+ Forza a far precedere il risultato con un segno più o meno (+ o -) anche per i numeri positivi. Per impostazione predefinita, solo i numeri negativi sono preceduti dal segno -ve. |
3 |
(space) Se non verrà scritto alcun segno, viene inserito uno spazio vuoto prima del valore. |
4 |
# Utilizzato con gli specificatori o, x o X, il valore è preceduto rispettivamente da 0, 0x o 0X per valori diversi da zero. Utilizzato con e, E ed f, forza l'output scritto a contenere un punto decimale anche se non segue alcuna cifra. Per impostazione predefinita, se non seguono cifre, non viene scritto alcun punto decimale. Usato con g o G, il risultato è lo stesso di e o E ma gli zeri finali non vengono rimossi. |
5 | 0 Inserisce a sinistra il numero con zero (0) invece di spazi, dove è specificato il riempimento (vedere il sotto-specificatore di larghezza). |
Sr.No. | Larghezza e descrizione |
---|---|
1 |
(number) Numero minimo di caratteri da stampare. Se il valore da stampare è inferiore a questo numero, il risultato viene riempito con spazi vuoti. Il valore non viene troncato anche se il risultato è maggiore. |
2 |
* La larghezza non è specificata nella stringa di formato, ma come argomento di un valore intero aggiuntivo che precede l'argomento che deve essere formattato. |
Sr.No. | .precisione e descrizione |
---|---|
1 |
.number Per gli specificatori di numeri interi (d, i, o, u, x, X) - la precisione specifica il numero minimo di cifre da scrivere. Se il valore da scrivere è inferiore a questo numero, il risultato viene riempito con zeri iniziali. Il valore non viene troncato anche se il risultato è più lungo. Una precisione pari a 0 significa che non viene scritto alcun carattere per il valore 0. Per gli specificatori e, E ed f - questo è il numero di cifre da stampare dopo il punto decimale. Per gli specificatori ge G: questo è il numero massimo di cifre significative da stampare. Per s - questo è il numero massimo di caratteri da stampare. Per impostazione predefinita, tutti i caratteri vengono stampati finché non viene incontrato il carattere nullo finale. Per il tipo c - non ha effetto. Quando non viene specificata alcuna precisione, il valore predefinito è 1. Se il periodo viene specificato senza un valore esplicito per la precisione, viene utilizzato 0. |
2 |
.* La precisione non è specificata nella stringa di formato, ma come un argomento di valore intero aggiuntivo che precede l'argomento che deve essere formattato. |
Sr.No. | Lunghezza e descrizione |
---|---|
1 |
h L'argomento viene interpretato come int breve o int breve senza segno (si applica solo a specificatori interi: i, d, o, u, x e X). |
2 |
l L'argomento viene interpretato come un int lungo o un int lungo senza segno per gli specificatori interi (i, d, o, u, x e X) e come un carattere o una stringa di caratteri ampi per gli specificatori c e s. |
3 |
L L'argomento viene interpretato come un doppio lungo (si applica solo agli specificatori in virgola mobile - e, E, f, ge G). |
additional arguments- A seconda della stringa di formato, la funzione potrebbe aspettarsi una sequenza di argomenti aggiuntivi, ciascuno contenente un valore da inserire invece di ogni tag% specificato nel parametro di formato (se presente). Dovrebbe esserci lo stesso numero di questi argomenti del numero di tag% che si aspettano un valore.
Valore di ritorno
In caso di esito positivo, viene restituito il numero totale di caratteri scritti escluso il carattere null aggiunto alla fine della stringa, altrimenti viene restituito un numero negativo in caso di errore.
Esempio
L'esempio seguente mostra l'utilizzo della funzione sprintf ().
#include <stdio.h>
#include <math.h>
int main () {
char str[80];
sprintf(str, "Value of Pi = %f", M_PI);
puts(str);
return(0);
}
Compiliamo ed eseguiamo il programma sopra, questo produrrà il seguente risultato:
Value of Pi = 3.141593