AD

Leggere un carattere con la funzione getchar in C

La funzione getchar del linguaggio C permette di leggere un singolo carattere (un unsigned char) dal stdin (standard input), nello specifico la funzione, una volta chiamata, attenderà un valore in ingresso dal stdin e non restituirà alcun valore fino a che non riceverà qualcosa in input.

Questo comportamento risulta essere simile a quanto accade con la funzione scanf, però a differenza di quest’ultima, la funzione getchar è in grado di leggere solamente un carattere per volta e non accetta parametri. Di seguito viene riportata la sua sintassi:

int getchar(void);

La funzione getchar non richiede alcun parametro, ma in ogni caso restituisce il carattere unsigned char letto, effettuando il casting ad una variabile di tipo int oppure di EOF in caso di fine o di errore. 

Esempio di utilizzo della funzione getchar in C

Tramite l’utilizzo della funzione getchar, possiamo leggere un carattere inserito da tastiera da parte di un utente, assegnando ad una variabile il valore di ritorno della funzione, come nel seguente caso:

printf("Inserisci carattere: "); char car = getchar(); printf("Hai inserito: %c", car);

Esempio di lettura di caratteri con la funzione getchar in C

Con il programma dell’esempio precedente siamo in grado di leggere solamente il primo carattere inserito da tastiera. Per poter leggere più caratteri con la funzione getchar, possiamo fare uso di un ciclo, ad esempio il ciclo while, tramite cui eseguiamo ad ogni iterazione la funzione getchar e stampiamo a schermo il carattere inserito. Questo processo continua fino a che non viene inserito '\n', ovvero il tasto invio.

Per poter funzionare dobbiamo usare la funzione getchar all’interno del blocco di espressione del while, assegnando il valore letto ad una variabile (nel nostro caso "c") e successivamente controllare che questa non sia il carattere newline '\n'. Mentre all’interno del ciclo while stampiamo a schermo il contenuto della variabile utilizzando la funzione printf.

#include <stdio.h> int main(){ char c; printf("Inserisci nome: "); while((c = getchar()) != '\n'){ printf("%c ", c); } return 0; } /* Outpu: Inserisci nome: Mario M a r i o */

Chiaramente al posto del carattere newline si può utilizzare qualsiasi altro carattere, oppure anche utilizzare una variabile come contatore. Allo stesso modo si possono utilizzare anche il ciclo do while oppure il ciclo for.