17. Il tipo char
Il tipo char consente di definire una variabile che può contenere un carattere.
I caratteri cui si fa riferimento sono quelli della codifica ASCII. Ciò consente di definire una corrispondenza tra i simboli cui siamo abituati (lettere, cifre, punteggiatura ecc.) e i numeri con cui tali caratteri sono codificati.
Una variabile di tipo char può essere trattata come un tipo numerico, con l'accortezza di trattare numeri nell'intervallo -128;127.
Per leggere dalla tastiera dei caratteri e acquisirli in variabili di tipo char si utilizza la funzione scanf() specificando il formato %c come illustrato di seguito:
char carattere;
scanf("%c", &carattere);
E' anche possibile utilizzare la funzione getchar() che non richiede parametri e restituisce il successivo carattere inserito da tastiera come illustrato di seguito:
char carattere;
carattere=getchar();
Quando si acquisiscono caratteri dalla tastiera (indipendentemente dalla modalità utilizzata, scanf() o getchar()) devono essere considerati anche i cosiddetti caratteri bianchi che nel caso dei dati numerici sono scartati automaticamente perché considerati separatori.
I caratteri bianchi includono lo spazio, il carattere di invio (corrispondente alla sequenza speciale \n), il tabulatore.
Con la scanf() è possibile eliminare i caratteri bianchi pendenti prima di leggere il il carattere successivo con l'istruzione:
scanf(" %c", &carattere);
(Notare lo spazio prima di %c).
In questo caso, tuttavia, il carattere spazio (e gli altri caratteri bianchi) saranno scartati anche se inseriti volontariamente da tastiera.
Esempio 1
Il programma acquisisce un numero da tastiera e successivamente un carattere gestendo correttamente lo spazio bianco pendente, dovuto all'inserimento del numero (in questo caso il carattere pendente è l'INVIO della tastiera).
#include <stdio.h>
int main()
{
int n;
char c;
printf("Inserire un numero: ");
scanf("%d", &n);
printf("Inserire un carattere (una lettera o una cifra numerica): ");
scanf(" %c", &c);
printf("E' stato inserito il numero %d e il carattere %c\n", n, c);
return 0;
}
Esempio 2
Il programma mostra come dichiarare una variabile di tipo char e alcune operazioni che possono essere eseguite su tali variabili.
#include <stdio.h>
int main()
{
char c1, c2, c3, c4;
int x;
c1='A';
c2='B';
c3=c2+1;
printf("%c %c %c\n", c1, c2, c3);
c3=c2-c1; // in ASCII i caratteri A e B sono consecutivi
printf("c3=%d\n", c3);
c1=80; // in ASCII 80 -> P
printf("c1=%c\n", c1);
c1++; // in ASCII 81 -> Q
printf("c1=%c\n", c1);
printf("Il codice ASCII di %c e' %d\n", c1, c1);
c2='a'+3; // il codice di 'a' + 3
printf("c2=%c\n", c2);
printf("Il codice ASCII di %c e' %d\n", c2, c2);
x=c1*2;
printf("x=%d\n", x);
c3=-44;
c2=11;
c1=c2+c3;
printf("c1=%d\n", c1);
printf("Inserire un carattere: ");
c4=getchar();
printf("il carattere inserito e': %c\n", c4);
return 0;
}
Esempio 3
Il seguente programma mostra come può essere trattato l'input da tastiera.
#include <stdio.h>
int main()
{
char c;
int i=0;
printf("Scrivere delle lettere a caso. Premere X e <INVIO> per terminare il programma\n");
do {
c=getchar();
i++;
} while (c!='x' && c!='X');
printf("Sono stati inseriti %d caratteri", i);
return 0;
}
Sito: 7ecnologie
Sezione: 08. C language
Capitolo: 02. Introduzione al C
Paragrafo: 17. Il tipo char
Indice dei capitoli: 00. Risorse - 01 Ambiente di sviluppo - 02. Introduzione al C - 03. Le librerie - 04. Tutorial - 05. Esercizi svolti - 98. Esercizi
Indice dei paragrafi: 01. Hello World - 02. Variabile di tipo int - 03. Input da tastiera - 04. Controllo condizionale if - 05. Operatori logici - 06. Ciclo while - 07. Operatore modulo - 08. Array - 09. Ciclo for - 10. Ciclo do/while - 11. Variabili di tipo float - 12. Funzione random() - 13. Impostazione del set di caratteri - 14. Definizione di funzioni - 15. Passaggio di parametri: gli array - 16. Variabili: visibilità e durata - 17. Il tipo char - 18. I file - 19. Funzioni matematiche
Indice degli approfondimenti: 01. Array di char - 02. Le stringhe