Funzione di libreria C - vsprintf ()
Descrizione
La funzione di libreria C. int vsprintf(char *str, const char *format, va_list arg) invia l'output formattato a una stringa utilizzando un elenco di argomenti passato ad essa.
Dichiarazione
Di seguito è riportata la dichiarazione per la funzione vsprintf ().
int vsprintf(char *str, const char *format, va_list arg)
Parametri
str - Questo è l'array di elementi char in cui deve essere memorizzata la stringa risultante.
format- Questa è la stringa C che contiene il testo da scrivere in str. Opzionalmente può contenere tag di formato incorporati che vengono sostituiti dai valori specificati negli argomenti aggiuntivi successivi e vengono 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). |
arg- Un oggetto che rappresenta l'elenco degli argomenti delle variabili. Questo dovrebbe essere inizializzato dalla macro va_start definita in <stdarg>.
Valore di ritorno
In caso di successo, viene restituito il numero totale di caratteri scritti, altrimenti viene restituito un numero negativo.
Esempio
L'esempio seguente mostra l'utilizzo della funzione vsprintf ().
#include <stdio.h>
#include <stdarg.h>
char buffer[80];
int vspfunc(char *format, ...) {
va_list aptr;
int ret;
va_start(aptr, format);
ret = vsprintf(buffer, format, aptr);
va_end(aptr);
return(ret);
}
int main () {
int i = 5;
float f = 27.0;
char str[50] = "tutoriaspoint.com";
vspfunc("%d %f %s", i, f, str);
printf("%s\n", buffer);
return(0);
}
Compiliamo ed eseguiamo il programma sopra, questo produrrà il seguente risultato:
5 27.000000 tutoriaspoint.com