Programmazione

Output Con Printf

La funzione printf() in Linguaggio C: guida completa a sintassi, specificatori di formato (%d, %f, %c, %s), sequenze di escape e valore di ritorno.

Durata

20 minuti

Software

Compiler C / GCC / Dev-C++ / VS Code

Linguaggio

Linguaggio C

La Funzione printf() e l'Output Formattato in C

Argomenti: stdio.h, print formatted, specificatori di formato, sequenze di escape, formattazione decimali, valore di ritorno

La funzione printf() è lo strumento fondamentale del linguaggio C per visualizzare messaggi e dati a schermo. Il suo nome deriva da "print formatted" (stampa formattata), poiché permette di combinare testo fisso e valori di variabili all'interno di un'unica stringa di output.

1. Inclusione e Sintassi Base

Libreria Standard: Includere <stdio.h> e comprendere i parametri

Per utilizzare printf() è necessario includere la libreria di I/O standard in cima al file sorgente tramite la direttiva #include <stdio.h>.

Firma della funzione:

int printf(const char *format, ...);
  • format: Stringa di testo racchiusa tra doppi apici " " che contiene il messaggio ed i segnaposto (specificatori).
  • ... (argomenti variabili): La lista di variabili o valori da inserire in ordine corrispondente ai segnaposto.
  • int (ritorno): Restituisce un numero intero indicante il conteggio dei caratteri stampati con successo.

2. Specificatori di Formato (Segnaposto)

Tipi di Dato: Come inserire i valori delle variabili all'interno del testo

Specificatore Tipo di Dato C Descrizione ed Esempio
%d oppure %i int / short Stampa numeri interi decimali con segno.
%f float / double Stampa numeri decimali in virgola mobile (es. 12.500000).
%.2f float / double Formattazione con precisione fissata a 2 cifre decimali (es. 12.50).
%c char Stampa un singolo carattere (es. 'A').
%s Stringa (char[]) Stampa una sequenza di caratteri/testo (es. "Ciao").
%u / %ld / %lld Tipi interi modificati Specificatori per unsigned, long e long long.

3. Sequenze di Escape (Caratteri di Controllo)

Controllo Layout: Formattazione dell'andata a capo e spaziatura

Le sequenze di escape sono caratteri di controllo speciali. Vengono scritti con il backslash \ e servono per formattare l'aspetto visivo del testo nel terminale:

\n (Newline - Andata a capo)

Sposta il cursore a capo sulla riga successiva. printf() **non** va a capo automaticamente senza di esso!

\t (Tabulatore)

Inserisce uno spazio largo di tabulazione (di solito 4 o 8 spazi) per allineare verticalmente i dati in colonna.

\" e \ (Escape Apici)

Permettono di stampare i caratteri riservati come le virgolette doppi o il backslash senza interrompere la stringa.

Esempi di effetto visivo nel terminale:

1. Effetto di (Newline):
printf("Ciao Mondo");
Ciao
Mondo
2. Effetto di (Tabulatore):
printf("Nome Voto Mario 30");
Nome        Voto
Mario       30

4. Il Valore di Ritorno di printf()

Conteggio Caratteri: Cosa restituisce l'invocazione di printf()

Molti sviluppatori ignorano che printf() restituisce sempre un valore intero (int):

In Caso di Successo

Restituisce un numero intero positivo pari al numero totale di caratteri inviati a schermo. Nel conteggio sono inclusi lettere, cifre, spazi e caratteri speciali come e .

In Caso di Errore

Se si verifica un errore di scrittura sul dispositivo di output, restituisce un numero negativo (solitamente definito dalla costante EOF, pari a -1).

5. Esempio Pratico Completo

Laboratorio C: Formattazione avanzata e verifica del valore di ritorno

Codice Sorgente C (main.c):
1 #include <stdio.h>
2
3 int main(void) {
4     int voto = 30;
5     double prezzo = 19.99;
6     int caratteriStampati;
7
8     // 1. Stampa formattata con due decimali (%.2f)
9     printf("Voto: %d | Prezzo: %.2f euro ", voto, prezzo);
10
11     // 2. Salvataggio del valore di ritorno
12     caratteriStampati = printf("La risposta e' %d. ", 42);
13
14     // 3. Stampa del conteggio restituito
15     printf("printf ha stampato %d caratteri. ", caratteriStampati);
16
17     return 0;
18 }
Conteggio dei Caratteri (Riga 12):

Analizziamo la stringa "La risposta e' 42. ":

  • "La risposta e' " ➔ 15 caratteri
  • 42 (conversione di %d) ➔ 2 caratteri
  • . ➔ 1 carattere
  • (andata a capo) ➔ 1 carattere
Totale Caratteri: 15 + 2 + 1 + 1 = 19

Errore comune da evitare

Assicurati sempre che il numero di specificatori di formato corrisponda esattamente al numero di variabili passate dopo la stringa! Passare meno variabili rispetto ai %d presenti causerà la stampa di valori imprevedibili (spazzatura in memoria).


In sintesi

Argomenti: concetti principali, riepilogo, competenze

  1. La funzione printf() (print formatted) appartiene a <stdio.h> ed è lo strumento standard per l'output formattato su console.
  2. Gli specificatori di formato (%d, %f, %c, %s) inseriscono dinamicamente i valori delle variabili all'interno del testo.
  3. Le sequenze di escape (\n, \t, \") controllano la spaziatura, l'andata a capo ed i caratteri speciali.
  4. printf() restituisce un numero intero pari al numero totale di caratteri stampati con successo a schermo.

Cosa hai imparato
  1. Compilare stringhe di formato ed associare i corretti specificatori alle variabili.
  2. Formattare la precisione dei numeri decimali (es. %.2f per due cifre decimali).
  3. Utilizzare le sequenze di escape per gestire l'andata a capo (\n) e la tabulazione (\t).
  4. Verificare l'esito della stampa analizzando il valore di ritorno intero di printf().


Linguaggio C, printf, stdio.h, Specificatori di formato, Sequenze di escape, Output console, Valore di ritorno,