Les chaînes de caractères

Description

Les chaînes de caractères sont réprésentées sous forme de tableau de variables de type char et se termine par un zéro. Exemple:

Toutes les expressions suivantes sont des déclarations valides pour des chaînes de caractère.

char Str1[15]; char Str2[8] = {'a', 'r', 'd', 'u', 'i', 'n', 'o'}; char Str3[8] = {'a', 'r', 'd', 'u', 'i', 'n', 'o', '\0'}; char Str4[ ] = "arduino"; char Str5[8] = "arduino"; char Str6[15] = "arduino";

Les différentes possibilités pour la déclaration des chaînes de caractères

  • Déclarer un tableau de caractères sans l'initialiser (Str1 dans l'exemple).
  • Declarer un tableau de caractères (avec un caractère supplémentaire non utilisé) et le compilateur ajoutera le caractère nul requis (Str2 dans l'exemple)
  • Idem, mais en déclarant explicitement le caractère nul (Str3 dans l'exemple)
  • Initialiser avec une chaîne de caractère constante entre guillemets doublse : le compilateur dimensionnera le tableau pour stocker la chaîne de caractère constante et le caractère nul terminal (Str4 dans l'exemple)
  • Initialiser le tableau avec une taille explicite et une chaîne de caractère contante (Str5 dans l'exemple)
  • Initialiser le tableau, en laissant un espace vide pour une chaîne large (Str6 dans l'exemple)

Le caractère nul final

Généralement, les chaînes de caractères sont terminées avec un caractère nul (code ASCII 0, à distinguer du '0' qui a le code ASCII 48). Cela permet aux fonctions (telle que Serial.print() ) de savoir où se termine la chaîne de caractères. Autrement, les fonctions continueraient à lire les octets de mémoire suivant, bien qu'ils ne fassent pas partie de la chaîne de caractères.

Cela signifie que votre chaîne nécessite d'avoir un espace pour un caractère de plus que le texte qu'elle contient (pour y mettre le caractère nul...). C'est pourquoi les chaînes Str2 et Str5 de l'exemple nécessite 8 caractères, même si la chaîne "Arduino" n'en fait que 7 - la dernière position est automatiquement remplie avec le caractère nul. La chaîne Str4 sera automatiquement dimensionnée à 8 caractère, soit un pour le caractère nul supplémentaire. Dans la chaîne d'exemple Str3, nous avons explicitement inclut nous-mêmes le caractère nul (écrit '\0' et qui correspond au code ASCII 0 - à distinguer répétons-le du caractère '0' qui correspond au code ASCII 48).

Noter qu'il est possible d'avoir une chaîne sans un caractère nul final (pour exemple si vous avez spécifié une longueur de Str2 de 7 au lieu de 8). Ceci aura pour effet d'interrompre l'exécution de la plupart des fonctions qui utilisent des caractères, et donc vous ne devriez pas le faire intentionnellement. Si vous constatez quelque chose qui se comporte étrangement dans un programme (utilisation de caractères qui ne sont pas dans la chaîne par exemple), bien souvent, l'oubli du caractère nul en fin de chaîne peut être la cause du problème.

Guillements simples ou guillemets doubles ?

Les chaînes de caractères sont toujours définies à l'intérieur de guillements doubles ("ABC") et les caractères sont toujours définis à l'intérieur de guillemets simples('A').

Déclaration de longues chaînes de caractères

Vous pouvez scinder de longues chaînes de caractères de la façon suivante:

char myString[] = "Ceci est la première ligne" " Ceci est la seconde ligne" " etcetera";

Tableaux de chaînes de caractères

Il est souvent pratique, quand on travaille avec beaucoup de textes larges, tel qu'un projet utilisant un afficheur LCD, de définir un tableau de chaîne de caractère. Puisque les chaînes de caractères sont elle-mêmes des tableaux, c'est en fait un cas particulier de tableau à deux dimensions.

Dans le code ci-dessous, l'astérisque après la déclaration de donnée de type char "char*" indique qu'il s'agit d'un tableau de "pointeurs". Tous les noms de tableaux sont en réalité des pointeurs, et c'est donc de qui est requis pour construire un tableau de tableaux. Les "pointeurs" sont une des choses les plus ésotériques du langage C à comprendre pour les débutants, mais il n'est pas nécessaire de comprendre les pointeurs en détail pour les utiliser effectivement ici.

Note du traducteur : un pointeur désigne la localisation en mémoire d'une variable alors que son nom désigne son contenu.

Exemple

// déclaration d'un tableau de pointeurs de chaîne de caractère char* myStrings[] = {"Ceci est la chaine 1", "Ceci est la chaine 2", "Ceci est la chaine 3", "Ceci est la chaine 4", "Ceci est la chaine 5", "Ceci est la chaine 6" }; void setup() { Serial.begin(9600); // initialise la comunication série } void loop() { // affiche successivement les différentes chaînes de caractères for (int i = 0; i < 6; i++) { Serial.println(myStrings[i]); delay(500); } }

Voir Également

Please note: These are affiliate links. If you buy the components through these links, We may get a commission at no extra cost to you. We appreciate it.