Skip to content

Gestione Errori e Output Formattato

Le funzioni in C spesso restituiscono un valore che indica se l’operazione ha avuto successo. Ad esempio, la funzione puts restituisce il valore speciale EOF (End Of File) se si verifica un errore di scrittura.

#include <stdio.h>
#include <stdlib.h>
int main(void) {
if (puts("Hello, world!") == EOF) {
return EXIT_FAILURE;
}
return EXIT_SUCCESS;
}

La funzione printf permette di formattare stringhe mescolando testo e variabili:

printf("L'utente %s ha %d anni\n", "Mario", 30);

Per leggere input dall’utente (ad esempio dalla tastiera), il C fornisce nativamente la funzione scanf. Tuttavia, scanf può essere molto insidiosa per i principianti e per la sicurezza del sistema.

Invece di usare scanf, una pratica di sicurezza molto più affidabile per acquisire stringhe dall’utente è utilizzare fgets:

char nome[50];
if (fgets(nome, sizeof(nome), stdin) != NULL) {
// Input letto con successo entro i limiti massimi della memoria
}

Scrivi un programma che legge un nome dallo standard input (stdin) usando fgets e poi stampa "Ciao, <nome>" usando printf. (La funzione fgets manterrà il carattere di a capo inserito dall’utente, quindi non è necessario aggiungere \n in printf).