Printf

Printf in C è una funzione di output così come lo sono anche le funzioni putc e putchar. Più avanti studieremo inoltre altre funzioni derivate.

Quindi printf è una funzione che serve a visualizzare semplicemente un messaggio a video.


La sintassi della funzione printf è la seguente:

printf(“testo <SpecificatoreDiFormato>”,{<Espressione>})

La funzione pertanto invia al dispositivo di output il messaggio posto tra doppi apici.


Facciamo dunque alcuni semplici esempi con printf:

printf(“Coding Creativo”);

In questo caso non ho utilizzato nè SpecificatoreDiFormato, nè l’espressione dopo la virgola, ma ho stampato semplicemente una frase.

printf(“%c“, ‘A‘);

Nel caso specifico ho solo stampato la lettera A, senza inserire del testo prima.

printf(“Base: %d”, base)

In questo caso stampo a video il valore intero della base.


Printf – Specificatore di formato

Vediamo adesso in dettaglio gli specificatori di formato che si usano nella funzione printf in C.

Specificatore di formato
Espressione
%c char – cioè per il carattere singolo
%d (%i)
int – cioè per un intero decimale con segno
%e (%E)
float o double cioè per il formato esponenziale
%f
float o double – cioè per il reale con segno
%g (%G)
float o double – Quindi si usa  %f o %e
in base alle esigenze
%o int – indica cioè un valore in base 8 senza segno
%p pointer – indica quindi valore di una variabile
puntatore
%s array di char – indica cioè una
stringa di caratteri
%u int – indica cioè un intero senza segno
%x (%X)
int – indica quindi un valore in base 16
senza segno

Il simbolo % è dunque utilizzato per introdurre lo specificatore di formato. Per stampare a video il carattere % allora occorre inserirne due.

Facciamo quindi un esempio con printf in C:

printf("Sconto del 30 %%");

Così visualizziamo in output la frase: Sconto del 30%.


La sequenza di escape

La sequenze di escape sono dei caratteri che non vengono visualizzati, ma contribuiscono a formattare il testo. Tutte le sequenze di escape iniziano con il carattere di backslash (\) e sono interpretate come un singolo carattere.

Sequenza di escape Descrizione
\n nuova riga (new line), cioè va a capo
\t tabulazione (tab),
fa cioè lo spazio di un tab
\a segnale sonoro (alert)
\f nuova pagina (form feed)
\r ritorno a capo della stessa riga
\v tabulazione verticale,
cioè uno spazio di un tab in verticale
\b una battuta indietro (backspace)
\\ barra rovesciata (backslash),
stampa quindi \
\’ apice singolo,
stampa quindi
\” doppi apici,
stampa dunque
\? punto di domanda,
stampa quindi ?
\0 fine stringa
\<CifraOttale> numero ottale
\<CifraEsadecimale> numero esadecimale


Facciamo adesso degli esempi d’uso della funzione printf

Realizziamo un semplicissimo programma che stampa a video nel primo printf un numero decimale, nel secondo una stringa, nel terzo oltre al numero decimale anche lo stesso numero in ottale ed esadecimale, nel quarto un carattere singolo e nell’ultimo un numero con la virgola.

#include <stdio.h>

main() {
	printf("x vale %d", 10);
	printf("\nIl colore del maglione e': %s ", "verde");
	printf("\nNumero decimale: %d, ottale: %o, esadecimale: %x",
             234, 234, 234);
	printf("\nCarattere singolo: %c", 'A');
        printf("\nPigreco vale: %5.2f", 3.14);
}

Come potete notare nel caso del float ho specificato %5.2f, infatti è possibile fare delle precisazioni.

%[lunghezza].[precisione]<SpecificatoreDiFormato>

In questo modo, ad esempio nel caso del float indichiamo quante cifre vogliamo stampare e precisiamo quante dopo la virgola.

Quindi con %5.2f indichiamo un totale di 5 cifre di cui due dopo la virgola, nel conteggio delle 5 cifre è compreso anche il punto decimale.

Alcuni link utili

Realizzare un menù di scelta in C

Come sommare gli elementi della cornice esterna delle matrici

Come sommare due matrici

Sommare dei numeri di una matrice

Ricerca elementi in una matrice

Inserire dati in una matrice

Tavola pitagorica in C

Array multidimensionali

Selection sort in C

Autore dell'articolo: Cristina

Avatar per Coding Creativo

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *