La funzione printf fornisce delle funzionalità piuttosto avanzate di output. Alla funzione è possibile passare come parametro delle variabili nonché le regole con cui queste andranno formattate.
#include <stdio.h>
void main()
{
int a = 64;
printf("Hello, %d!\n", a);
}
In questo programma è stata aggiunta una variabile di tipo intero il cui nome è a e gli è stato dato il valore numerico 64. La chiamata al printf contiene come primo parametro una stringa "Hello, %d!\n" e come secondo parametro la variabile a.
La stringa contiene all’inizio qualcosa di intellegibile, termina con il carattere di newline \n ma in esso troviamo anche %d, ovvero una sequenza di simboli che iniziano con il carattere % e fungono da segnaposto e direttiva di formattazione per la variabile posta come secondo argomento. Una volta compilato, il programma fornirà infatti il seguente output:
Hello, 64!
I simboli %d all’interno della stringa di formato oltre a rappresentare un segnaposto permettono alla funzione printf di interpretare correttamente il tipo della variabile e di visualizzarla in maniera coerente. Se per errore avessimo usato il segnaposto di formattazione %c che si usa per i caratteri alfanumerici, il valore 64 sarebbe stato interpretato come carattere e quindi sarebbe stato visualizzato il carattere corrispondente al codice ASCII[*] 64.
Hello, @!
Il compilatore non individua questo tipo di incoerenze, anche perché in alcuni casi questi tipi di comportamenti potrebbero essere voluti, per cui è necessario porre attenzione alla stringa di formattazione e alle variabili che vengono passate al printf. Ad esempio potrebbe essere fatale in questo caso usare il formato %s, ovvero il formato stringa poiché potrebbe comportare un segmentation fault durante l’esecuzione.