Les chaînes de caractères (appelées en anglais strings), sont des objets importants en programmation, intervenant dans les entrées-sorties et plus généralement dans la manipulation de fichiers textuels.
Une chaîne littérale est une suite de caractères entourée par des apostrophes doubles " (en anglais double quotes), par exemple "Knuth".
Une chaîne de caractères est représentée en mémoire comme un tableau de
char dont le dernier élément est le caractère nul noté
\0
. On peut utiliser une chaîne littérale pour définir une
variable de type tableau de caractères :
char k[] = "Knuth";
ce qui a pour effet d'allouer un tableau de 6 caractères (un de plus que la longueur de la chaîne), et d'initialiser chacun de ses éléments par :
k[0] = 'K'; k[1] = 'n'; k[1] = 'u'; k[1] = 't'; k[4] = 'h'; k[5] = '\0'
La valeur des caractères peut être ultérieurement modifiée, par exemple par
k[4] = 't';
mais le nom k n'étant pas une variable, ne peut être l'objet d'une affectation : k = "Donald" est interdit.
Les chaînes ont déjà été employées pour réaliser des lectures et des écritures. Les fonctions printf et scanf prennent une chaîne en premier argument.
Une chaîne de caractères (sans espaces) peut être lue sur l'entrée
standard avec la fonction scanf, et écrite sur la sortie
standard avec printf en utilisant la conversion %s
:
char s[4]; /* pour lire au plus 3 caractères */ scanf("%s", s); printf("%s", s);
Un \0
est ajouté à la fin des caractères lus par scanf.