Cours 10.1. Les chaines de caractères en C

Introduction

Une chaîne de caractère (string en anglais) est un format particulier de tableau destiné à stocker des caractères alphanumériques, c'est à dire du texte. Un exemple classique de chaîne de caractères est le premier paramètre de la fonction printf() :

printf("Hello!");

Dans l'exemple ci-dessus, "Hello!" est une chaîne de caractères. Notez que les chaînes de caractères sont encadrées par des guillemets doubles. C'est de cette façon que les chaînes de caractères sont spécifiées en C.

Syntaxe

Une chaîne de caractères est un cas particulier des tableaux de caractères, dont ils partagent la syntaxe. L'exemple suivant déclare :

char texte[10];

Dans cette section sur les chaînes de caractères, nous allons utiliser la bibliothèque standard string.h qui contient les fonctions de base au traitement des chaînes de caractères :

#include <string.h>

Initialisation

Une chaîne de caractères étant un tableau, il est possible de l'initialiser à la déclaration caractère par caractères :

char texte[] = {'H','e','l','l','o','!','\0'};

Notez au passage que le dernier caractère est '\0' qui est le premier caractère de la table ASCII.

Toutefois, il existe une façon plus conviviale d'initialiser une chaîne de caractères à la déclaration :

char text[] = "Hello!";

En C, les guillemets doubles marquent le début et la fin d'une chaîne de caractères (comme dans la fonction printf()). Attention à ne pas confondre cette syntaxe avec les guillemets simples qui sont destinés à spécifier un caractère unique :

// Caractère unique
char c = 'L'; 

// Chaîne de caractères
char text[] = "Mon texte";

Exemple

Voici un exemple de création de chaîne de caractères :

// Déclare et initialise une chaîne de caractères
char texte[] = "This is a string.";

// Affiche la chaîne de caractères
printf ("%s\n", texte);

// Affiche la taille du tableau et de la chaîne
printf ("Taille du tableau   : %ld octets\n", sizeof(texte));
printf ("Taille de la chaîne : %ld caractères\n", strlen(texte));

// Affiche les premières cellules du tableau
printf ("texte[0] =  %c\n", texte[0]);
printf ("texte[1] =  %c\n", texte[1]);
printf ("texte[2] =  %c\n", texte[2]);
printf ("texte[3] =  %c\n", texte[3]);

Quelques remarques sur cet exemple :

Exercices

Exercice 1

Écrire un programme qui déclare une chaîne de caractère url contenant le texte https://lucidar.me. Afficher :

Contenu de la chaîne : https://lucidar.me
Taille du tableau    : 19 octets
Taille de la chaîne  : 18 caractères

Exercice 2

On donne la déclaration de la chaîne suivante :

char str[] = "string";

À l'aide d'une boucle, parcourir un à un les caractères de la chaîne afin de les afficher sous forme :

Utilisez sizeof() pour déterminer la longueur du tableau dans la boucle. Voici l'affichage attendu de cet exercice :

str[0]  = 's'   = 115   = 0x73
str[1]  = 't'   = 116   = 0x74
str[2]  = 'r'   = 114   = 0x72
str[3]  = 'i'   = 105   = 0x69
str[4]  = 'n'   = 110   = 0x6E
str[5]  = 'g'   = 103   = 0x67
str[6]  = ''    =  0    = 0x00

Quiz

En C, une chaîne de caractères ...

Vérifier Bravo ! En C, une chaîne de caractères est un cas particulier des tableaux de caractères alphanumériques. Essaie encore ...

Quelle bibiothèque contient les fonctions élémentaire pour les chaînes de caractères ?

Vérifier Bravo ! string.h est une bibliothèque très utlisée. Essaie encore ...

Qu'affiche le code suivant :

char str[100] ="Coucou";
printf ("sizeof = %ld", sizeof(str));
Vérifier Bravo ! C'est la taille du tableau qui est affichée avec sizeof(). Essaie encore ...

Qu'affiche le code suivant :

char str[100] ="Coucou";
printf ("strlen = %ld", strlen(str));
Vérifier Bravo ! C'est la taille de la chaîne de caractères qui est affichée avec strlen(). Essaie encore ...

Voir aussi


Dernière mise à jour : 13/01/2023