Se si desidera semplicemente leggere un singolo carattere da stdin, quindi getchar()
è la scelta appropriata. Se hai requisiti più complessi, allora getchar()
non sarà sufficiente.
getc()
consente di leggere da un flusso diverso (ad esempio, uno aperto con fopen()
);
scanf()
consente di leggere più di un singolo carattere alla volta.
L'errore più comune quando si utilizza getchar()
è quello di cercare di utilizzare una variabile char
per memorizzare il risultato. È necessario utilizzare una variabile int
, poiché l'intervallo di valori getchar()
restituisce è "un valore nell'intervallo di unsigned char
, più il singolo valore negativo EOF
". Una variabile char
non ha un intervallo sufficiente per questo, il che può significare che è possibile confondere un ritorno di carattere completamente valido con EOF
. Lo stesso vale per getc()
.
Grazie per la risposta. In scanf se do solo% c, allora dovrei essere in grado di leggere solo un carattere, giusto? – Jay
Sì, ma è eccessivo per quello scopo. – caf
Seriamente eccessivo. Su molte piattaforme, getchar() è una macro che restituisce rapidamente un carattere (con un flusso bufferizzato) o utilizza fread() per ottenere un carattere. Con scanf(), c'è un sacco di lavoro non necessario. – tomlogic