Programmation en C – Les chaînes de caractères
Une chaîne est un tableau de caractères unidimensionnel qui se termine par le caractère nul ‘\0’. Ainsi, une chaîne terminée par un caractère nul contient les caractères qui composent la chaîne suivie d’un caractère nul.
La déclaration et l’initialisation suivantes créent une chaîne composée du mot « Bonjour ». Pour contenir le caractère nul à la fin du tableau, la taille du tableau doivent contenir une case de plus.
char str[8] = {‘B’, ‘o’, ‘n’, ‘j’, ‘o’, ‘u’, ‘r’,‘\0’};
Si vous suivez la règle de l’initialisation du tableau, vous pouvez écrire l’instruction ci-dessus comme suit
char str[] = “Bonjour“;
Voici la présentation en mémoire de la chaîne définie ci-dessus en C :
En pratique, vous ne placez pas le caractère nul à la fin d’une chaîne. Le compilateur C place automatiquement le ‘ 0’ à la fin de la chaîne lorsqu’il initialise le tableau. Prenons un exemple pour afficher la chaîne mentionnée ci-dessus
#include <stdio.h> int main () { char str[8] = {'B', 'o', 'n', 'j', 'o', 'u', 'r',''}; printf("Message : %sn", str); return 0; }
Lorsque le code ci-dessus est compilé et exécuté, il produit le résultat suivant :
Message : Bonjour
Voici quelques fonctions pour manipuler des chaînes de caractères en C.
strcpy (str1, str2);
Copie la chaîne str2 dans la chaîne str1.
strcat (str1, str2);
Concatène la chaîne str2 à la fin de str1.
strlen (str1);
Renvoie la longueur de str1.
strcmp (str1, str2);
Renvoie 0 si str1 et str2 sont identiques; inférieur de 0 si str1 < str2; supérieur à 0 si str1 > str2.
strchr (str1, c);
Renvoie un pointeur sur la première occurrence du caractère c dans la chaîne s1.
strstr (str1, str2);
Renvoie un pointeur sur la première occurrence de la chaîne str2 dans la chaîne str1.
L’exemple suivant utilise certaines des fonctions mentionnées ci-dessus :
#include <stdio.h> #include <string .h> int main () { char s1[12] = "Hello"; char s2[12] = "World"; char s3[12]; int size; /* copier s1 dans s3 */ strcpy(s3, s1); printf("strcpy( s3, s1) : %sn", s3 ); /* concatène s1 et s2 */ strcat( s1, s2); printf("strcat( str1, s2): %sn", s1 ); /* Longueur totale de s1 après la concaténation */ size = strlen(s1); printf("strlen(s1) : %dn", size); return 0; }
Lorsque le code ci-dessus est compilé et exécuté, il produit le résultat suivant :
strcpy( s3, s1) : Hello strcat( s1, s2): HelloWorld strlen(s1) : 10