Le type char



Dans ce chapitre, nous allons porter une attention particulière au type char.
Si vous vous souvenez bien, le type char permet de stocker des nombres compris entre -128 et 127.

Si ce type char permet de stocker des nombres, il faut savoir qu'en C on l'utilise rarement pour ça. En général, même si le nombre est petit, on le stocke dans un int. Certes, ça prend un peu plus de place en mémoire, mais aujourd'hui, la mémoire, ce n'est vraiment pas ce qui manque sur un ordinateur.



Le type char est en fait prévu pour stocker… une lettre ! Attention, j'ai bien dit : UNE lettre.

Comme la mémoire ne peut stocker que des nombres, on a inventé une table qui fait la conversion entre les nombres et les lettres. Cette table indique ainsi par exemple que le nombre 65 équivaut à la lettre A.

Le langage C permet de faire très facilement la traduction lettre <=> nombre correspondant. Pour obtenir le nombre associé à une lettre, il suffit d'écrire cette lettre entre apostrophes, comme ceci : 'A'. À la compilation, 'A' sera remplacé par la valeur correspondante.

Testons :

Code : C

int main(int argc, char *argv[])

{

    char lettre = 'A';


    printf("%d\n", lettre);


    return 0;

}



Code : Console

65



On sait donc que la lettre A majuscule est représentée par le nombre 65. B vaut 66, C vaut 67, etc.
Testez avec des minuscules et vous verrez que les valeurs sont différentes. En effet, la lettre 'a' n'est pas identique à la lettre 'A', l'ordinateur faisant la différence entre les majuscules et les minuscules (on dit qu'il « respecte la casse »).

La plupart des caractères « de base » sont codés entre les nombres 0 et 127. Une table fait la conversion entre les nombres et les lettres : la table ASCII (prononcez « Aski »). Le site AsciiTable.com est célèbre pour proposer cette table mais ce n'est pas le seul, on peut aussi la retrouver sur Wikipédia et bien d'autres sites encore.


Afficher un caractère



La fonction printf, qui n'a décidément pas fini de nous étonner, peut aussi afficher un caractère. Pour cela, on doit utiliser le symbole %c (c comme caractère) :

Code : C

int main(int argc, char *argv[])

{

    char lettre = 'A';


    printf("%c\n", lettre);


    return 0;

}



Code 

A



Hourra !
Nous savons afficher une lettre.

On peut aussi demander à l'utilisateur d'entrer une lettre en utilisant le %c dans un scanf :

Code : C 

int main(int argc, char *argv[])

{

    char lettre = 0;


    scanf("%c", &lettre);

    printf("%c\n", lettre);


    return 0;

}



Si je tape la lettre B, je verrai :

Code : Console

B

B



Le premier des deux B est celui que j'ai tapé au clavier, le second est celui affiché par le printf.

Voici à peu près tout ce qu'il faut savoir sur le type char. Retenez bien :

  • le type char permet de stocker des nombres allant de -128 à 127, unsigned char des nombres de 0 à 255 ;
  • il y a une table que votre ordinateur utilise pour convertir les lettres en nombres et inversement, la table ASCII ;
  • on peut donc utiliser le type char pour stocker UNE lettre ;
  • 'A' est remplacé à la compilation par la valeur correspondante (65 en l'occurrence). On utilise donc les apostrophes pour obtenir la valeur d'une lettre.

Créé avec HelpNDoc Personal Edition: Générateur gratuit de livres électroniques et documentation