Programmare in C – la funzione Scanf

Continua il corso sulla programmazione del linguaggio C. La funzione scanf permette di ricevere in input informazioni dal cosiddetto standard input, che è tipicamente costituito dalla tastiera.

La funzione scanf può fare diverse cose, ma è generalmente inaffidabile se non utilizzata nelle maniere più semplici. E' inaffidabile perchè non gestisce gli errori di inserimento. Ma per il programmi base molto semplici è facile da usare ed è più che sufficiente.

L'applicazione della scanf più semplice è ad esempio questa che segue:

 scanf("%d", &b);

Il programma leggerà un valore intero che l'utente digita da tastiera (%d sta per gli interi, proprio come nella printf, motivo per cui b deve essere una variabile dichiarata int) e lo memorizza nella variabile b.

La funzione scanf usa gli stessi placeholder della printf. Per gli int (valori interi) si utilizza %d

    • per i float (valori a virgola mobile float) si utilizza %f
    • per i char (stringhe di un singolo carattere) si utilizza %c
    • per le stringhe di più caratteri si utilizza %s.

Si DEVE mettere l'operatore indirizzo & prima della variabile utilizzata nella scanf. La ragione per cui si fa questo sarà più chiara quando parleremo di puntatori. E' facile dimenticare il simbolo & e quando lo dimenticherete il vostro programma andrà in crash se tenterete di eseguirlo.

In generale, è meglio usare la funzione scanf così come è fatto qui: per leggere un singolo valore da tastiera e pertanto usare chiamate alla funzione scanf multiple per leggere valori multipli. In ogni programma “serio”, sarà preferibile usare le funzioni gets o fgets e pertanto si dovrà effettuare il parsing della stringa per leggere i valori inseriti. La ragione per cui si sceglie di solito questa via apparentemente più complicata è dovuta alla possibilità di individuare prima e meglio eventuali errori che provengono dall'input e gestire quindi una soluzione per la correzione.

Le funzioni printf e scanf necessitano di un po' di pratica per essere capite alla perfezione, dopodichè saranno estremamente utili.

Provate questo!

Modificate questo programma in modo che accetti tre valori in input invece che solo due e fatene la somma.

#include <stdio.h>

int main()
{
    int a, b, c;
    printf("Enter the first value:");
    scanf("%d", &a);
    printf("Enter the second value:");
    scanf("%d", &b);
    c = a + b;
    printf("%d + %d = %d\n", a, b, c);
    return 0;
}

Provate a cancellare o ad aggiungere caratteri random o gruppi di lettere (parole) in uno dei programmi sopra presentati e guardate come il compilatore reagisce agli errori che introducete. Ad esempio. Cancellate la variabile b nella prima linea del programma precedente e vedete cosa fa il compilatore quando dimenticate di dichiarare una variabile. Cancellate una virgola e verificate cosa succede. Rimuovete poi una delle parentesi della funzione main. Create ognuno degli errori di cui sopra uno alla volta e poi lanciate il programma per la compilazione per vedere cosa succede. Simulando gli errori in questo modo imparerete a interpretare i messaggi dei compilatori e quindi riuscirete ad individuare meglio i vostri errori di digitazione.

Errori da evitare in C

    • ricordarsi che il C è case-sensitive, ossia distingue fra maiuscole e minuscole, quindi scrivere PRINTF e printf non è la stessa cosa. Si deve assolutamente scrivere printf
    • Dimenticarsi di usare il simbolo & nella scanf
    • Utilizzare troppi (o troppo pochi parametri) nella stringa di formato nelle funzioni printf o scanf
    • dimenticare di dichiarare una veriabile prima di usarla.
Scarica subito una copia gratis

Scrivi un commento

Seguici anche sul tuo Social Network preferito!

Send this to a friend