Funzione libreria C - vprintf ()

Descrizione

La funzione di libreria C. int vprintf(const char *format, va_list arg) invia l'output formattato a stdout utilizzando un elenco di argomenti passato ad esso.

Dichiarazione

Di seguito è riportata la dichiarazione per la funzione vprintf ().

int vprintf(const char *format, va_list arg)

Parametri

  • 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. Il prototipo di tag di formato sarebbe:%[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 vprintf ().

#include <stdio.h>
#include <stdarg.h>

void WriteFrmtd(char *format, ...) {
   va_list args;
   
   va_start(args, format);
   vprintf(format, args);
   va_end(args);
}

int main () {
   WriteFrmtd("%d variable argument\n", 1);
   WriteFrmtd("%d variable %s\n", 2, "arguments");
   
   return(0);
}

Compiliamo ed eseguiamo il programma sopra che produrrà il seguente risultato:

1 variable argument
2 variable arguments