Programmation en C :

4. Type caractère et type chaine (variables et constantes)

codecommentaire
/* prog4a.c */
#include <stdio.h>

char k;
char r='\n';

main() {
  k='A';   printf("%c, ",k);
  k=k+32;  printf("%c, ",k);
  k='b';   printf("%c, ",k);
  k=k-' '; printf("%c%c",k,r);
  printf("code de '%c': %d\n",k,k);
}
Les caractères disponibles sont à la base ceux du code ASCII.
Les constantes caractères sont écrites entre apostrophes informatiques.
Le symbole \ (anti-slash) a un rôle particulier, notamment '\n' représente un retour-à-la-ligne1.
N.B. Pour le C, un caractère est représenté directement par son code compris entre −128 et +127, on peut donc utiliser pour les caractères les mêmes opérateurs que pour les entiers.
exécutioncommentaire
./executable4a
A, a, b, B
code de 'B': 66
C'est l'utilisation du format%c au lieu de %d dans printf qui décide l'affichage sous forme de caractère.
codecommentaire
/* prog4b.c */
#include <stdio.h>

char* t="bonjour";
char* v="chez vous";
char* w="@AB";
char* x;
char k;

main() {
  printf("%s %s\n",t,v);
  k=w[0];
  printf("%c %c %c %c\n",t[0],k,v[0],v[5]);
  printf("codage de w: ");
  printf("%d %d %d %d\n",w[0],w[1],w[2],w[3]);
}
Une chaine de caractères est déclaré avec le type char*.
Remarque. On peut écrire indifféremment :  char* x;   char *x   char * x;  (on verra ultérieurement la signification de l'étoile qui n'est pas ici un opérateur de multiplication).
Les constantes chaines sont délimitées par des guillemets informatiques.
Le premier caractère d'une chaine w est w[0] (indiçage de 0 à n−1 pour une chaine de n caractères).
exécutioncommentaire
→ ./executable4b
bonjour chez vous
b @ c v
codage de w: 64 65 66 0
La chaine w contient trois caractères qui sont w[0], w[1], et w[2] ; mais la chaine utilise un octet de plus en mémoire pour placer en w[3] la valeur '\0' (càd zéro) qui indique conventionnellement la fin de la chaine.
Remarque. On peut donc avoir (théoriquement) des chaines aussi longues que l'on veut. On verra cependant les problèmes induits par ce choix de codage du C, notamment pour la saisie des chaines au clavier ou pour le chargement depuis un fichier.
codecommentaire
/* prog4c.c */
#include <stdio.h>
#include <string.h>

char t[6];

main() {
  strcpy(t,"bonjour");
  printf("%s\n",t);
  strcpy(t,"bonjour chez vous");
  printf("%s\n",t);
  printf("taille: %d\n",strlen(t));}
Une chaine peut aussi être déclarée comme un tableau de caractères (voir ultérieurement).
Les manipulations des chaines se font à l'aide des fonctions de la bibliothèque1 string.h plutôt qu'avec des opérateurs.
exécutioncommentaire
→ ./executable4c
bonjour
bonjour chez vous
taille: 17
 
Les tableaux de caractères sont affichés correctement sans qu'il soit besoin d'un '\0' terminal, au contraire des char*.
La fonction strcpy (normalement) agrandit le tableau de caractères s'il en est besoin.
Remarque. Par comparaison avec les tableaux d'autres types, ce comportement est surprenant.
1 Pour plus de détail, voir l'annexe : types caractère et chaine de C.