Successivo: , Precedente: , Su: Printf   [Contenuti][Indice]


5.5.2 Lettere di controllo del formato

Uno specificatore di formato inizia col carattere ‘%’ e termina con una lettera di controllo del formato; e dice all’istruzione printf come stampare un elemento. La lettera di controllo del formato specifica che tipo di valore stampare. Il resto dello specificatore di formato è costituito da modificatori facoltativi che controllano come stampare il valore, per esempio stabilendo la larghezza del campo. Ecco una lista delle lettere di controllo del formato:

%c

Stampa un numero come un carattere; quindi, ‘printf "%c", 65’ stampa la lettera ‘A’. L’output per un valore costituito da una stringa è il primo carattere della stringa stessa.

NOTA: Lo standard POSIX richiede che il primo carattere di una stringa sia stampato. In localizzazioni con caratteri multibyte, gawk tenta di convertire i primi byte della stringa in un carattere multibyte valido e poi di stampare la codifica multibyte di quel carattere. Analogamente, nella stampa di un valore numerico, gawk ammette che il valore appartenga all’intervallo numerico di valori che possono essere contenuti in un carattere multibyte. Se la conversione alla codifica multibyte non riesce, gawk usa gli ultimi otto bit della cifra (quelli meno significativi) come carattere da stampare.

Altre versioni di awk generalmente si limitano a stampare il primo byte di una stringa o i valori numerici che possono essere rappresentati in un singolo byte (0–255).

%d, %i

Stampa un numero intero in base decimale. Le due lettere di controllo sono equivalenti. (La specificazione ‘%i’ è ammessa per compatibilità con ISO C.)

%e, %E

Stampa un numero nella notazione scientifica (con uso di esponente). Per esempio:

printf "%4.3e\n", 1950

stampa ‘1.950e+03’, con un totale di quattro cifre significative, tre delle quali seguono il punto che separa la parte intera da quella decimale [in Italia si usa la virgola al posto del punto] (L’espressione ‘4.3’ rappresenta due modificatori, introdotti nella prossima sottosezione). ‘%E’ usa ‘E’ invece di ‘e’ nell’output.

%f

Stampa un numero in notazione a virgola mobile. Per esempio:

printf "%4.3f", 1950

stampa ‘1950.000’, con un totale di quattro cifre significative, tre delle quali vengono dopo il punto decimale. (L’espressione ‘4.3’ rappresenta due modificatori, introdotti nella prossima sottosezione).

In sistemi che implementano il formato a virgola mobile, come specificato dallo standard IEEE 754, il valore infinito negativo è rappresentato come ‘-inf’ o ‘-infinity’, e l’infinito positivo come ‘inf’ o ‘infinity’. Il valore speciale “not a number” [non è un numero] viene scritto come ‘-nan’ o ‘nan’ (vedi Definizioni matematiche).

%F

Come ‘%f’, ma i valori di infinito e di “not a number” sono scritti in lettere maiuscole.

Il formato ‘%F’ è un’estensione POSIX allo standard ISO C; non tutti i sistemi lo prevedono. In tali casi, gawk usa il formato ‘%f’.

%g, %G

Stampa un numero usando o la notazione scientifica o quella a virgola mobile, scegliendo la forma più concisa; se il risultato è stampato usando la notazione scientifica, ‘%G’ usa ‘E’ invece di ‘e’.

%o

Stampa un numero intero in ottale, senza segno (vedi Numeri non-decimali).

%s

Stampa una stringa.

%u

Stampa un numero intero decimale, senza segno. (Questo formato è poco usato, perché tutti i numeri in awk sono a virgola mobile; è disponibile principalmente per compatibilità col linguaggio C.)

%x, %X

Stampa un intero esadecimale senza segno; ‘%X’ usa le lettere da ‘A’ a ‘F’ invece che da ‘a’ a ‘f’ (vedi Numeri non-decimali).

%%

Stampa un solo carattere ‘%’. Questa notazione non serve per stampare alcun argomento e ignora eventuali modificatori.

NOTA: Quando si usano lettere di controllo del formato per numeri interi per stampare valori esterni all’intervallo massimo disponibile nel linguaggio C per i numeri interi, gawk usa lo specificatore di formato ‘%g’. Se si specifica l’opzione --lint sulla riga di comando (vedi Opzioni), gawk emette un messaggio di avvertimento. Altre versioni di awk possono stampare valori non validi, o comportarsi in modo completamente differente. (a.b.)


Successivo: , Precedente: , Su: Printf   [Contenuti][Indice]