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
Sommare dei numeri di una matrice
Ricerca elementi in una matrice