La funzione scanf del linguaggio C

Nel linguaggio C la funzione scanf() è una funzione di input della libreria stdio.h

scanf(stringa, variabile)

La funzione ha due parametri:

  • Nel primo parametro (stringa) indico lo specificatore di formato preceduto dal simbolo %.
  • Nel secondo parametro indico l'indirizzo di memoria del nome della variabile dove memorizzare il dato digitato dalla tastiera.

    Nota. Per indicare l'indirizzo di memoria di una variabile, prima del nome della variabile devo aggiungere il simbolo &. Ad esempio, se la variabile è nome devo scrivere &nome.

A cosa serve scanf

Mi permette di acquisire un carattere o una sequenza di caratteri alfanumerici (stringa) tramite la tastiera e memorizzarla in una variabile del programma.

Esempi pratici

Esempio 1

Questo codice legge un dato intero (%d) dalla tastiera e lo memorizza nell'indirizzo di memoria della variabile x.

#include <stdio.h>
int main()
{
int x;
printf("Digita un numero intero: ");
scanf("%d", &x);
printf("Hai digitato: %d", x);
return 0;
}

Essendo un numero intero, lo specificatore di formato è %d mentre la variabile x la dichiaro in formato int (intero).

Nota. Nella funzione scanf() prima del nome di variabile aggiungo il simbolo & per indicare l'indirizzo di memoria della variabile.

Infine il programma stampa a video il contenuto della variabile x con l'istruzione printf.

Ad esempio, se digito il numero 5 l'output del programma è

Digita un numero intero: 5
Hai digitato: 5

Esempio 2

Questo codice legge un numero reale dalla tastiera.

Poi lo salva nell'indirizzo di memoria della variabile x.

int main()
{
float x;
printf("Digita un numero con la virgola: ");
scanf("%f", &x);
printf("Hai digitato: %5.2f", x);
return 0;
}

Essendo un numero reale, in questo caso lo specificatore di formato è %f mentre la variabile x la dichiaro in formato float (virgola mobile).

Infine, stampa sullo schermo il valore digitato con la funzione printf().

Digita un numero con la virgola: 23.11
Hai digitato: 23.11

Esempio 3

Questo codice legge un dato alfanumerico, un carattere qualsiasi digitato sulla tastiera, e lo salva nell'indirizzo di memoria della variabile.

#include <stdio.h>
int main()
{
char x;
printf("Digita un carattere: ");
scanf("%c", &x);
printf("Hai digitato: %c", x);
return 0;
}

In questo caso il dato digitato è un carattere alfanumerico. Quindi, lo specificatore di formato è %c mentre la variabile x la dichiaro in formato char (carattere).

Alla fine il programma stampa sullo schermo il carattere digitato.

Ad esempio, se digito il carattere Y l'output del programma è

Digita un carattere: Y
Hai digitato: Y

Esempio 4

Posso usare la funzione scanf() anche per leggere più dati in sequenza e salvarli in indirizzi di memoria diversi, ossia in variabili diverse.

scanf(“%d %d“, &x, &y);

Gli specificatori di formato

Nella funzione scanf() posso usare diversi specificatori di formato.

Ecco un elenco di specificatori di formato utilizzabili nel linguaggio C.

gli specificatori di formato del linguaggio C

Attenzione. Lo specificatore di formato deve coincidere con il tipo di dati che la variabile può contenere. Se la variabile è stata dichiarata per ospitare un diverso tipo di dati, nell'assegnazione si potrebbe verificare una perdita di informazioni o un errore del programma durante l'esecuzione.

E così via.

 


 

Segnalami un errore, un refuso o un suggerimento per migliorare gli appunti

FacebookTwitterLinkedinLinkedin
knowledge base

Libri di approfondimento

Il linguaggio C

  1. Un esempio pratico
  2. Come compilare il programma

Impariamo a programmare

  1. Come dichiarare le variabili
  2. Gli operatori
  3. La libreria stdio.h
  4. Come visualizzare in output testo e variabili
  5. Come usare le stringhe
  6. L'istruzione IF
  7. Le strutture cicliche
  8. Le funzioni
  9. Gli array