577804 membres | 20490 connectés | 3593 questions/jour | Taux de réponse: 86.47% | Jeudi 10 janvier 2008 - 13:43:22 | Mot de passe oublié ? |
Une chaîne de caractères (appelée string en anglais) est une suite de caractères, c'est-à-dire un ensemble de symboles faisant partie du jeu de caractères, défini par le code ASCII.
En langage C++, une chaîne de caractères est un tableau, comportant plusieurs données de type char, dont le dernier élément
est le caractère nul '\0', c'est-à-dire le premier caractère du code ASCII (dont la valeur est 0).
Ce caractère est un caractère de contrôle (donc non affichable) qui permet d'indiquer une fin de
chaîne de caractères. Ainsi une chaîne composée de n éléments sera en fait un tableau de n+1 éléments
de type char.
On peut par exemple représenter la chaîne « Bonjour » de la manière suivante :
B | o | n | j | o | u | r | \0 |
Pour définir une chaîne de caractères en langage C, il suffit de définir un tableau de caractères. Le nombre maximum de caractères que comportera la chaîne sera égal au nombre d'éléments du tableau moins un (réservé au caractère de fin de chaîne).
char Nom_du_tableau[Nombre_d_elements]
Astuce ! En définissant le tableau de la manière suivante, vous mettez en évidence le nombre de caractères maximal de la chaîne :
char Nom_du_tableau[Nombre_d_elements + 1]
char Chaine[50 + 1]
Comme généralement en langage C++, il faut initialiser votre chaîne de caractères, c'est-à-dire
remplir les cases du tableau avec des caractères, sachant que celui-ci devra obligatoirement contenir le caractère
de fin de chaîne '\0'.
Il y a deux façons de procéder :
Voici un exemple d'initialisation manuelle de chaîne de caractères :
#include <stdio.h> void main(){ char Chaine[20+1]; Chaine[0]= 'B'; Chaine[1]= 'o'; Chaine[2]= 'n'; Chaine[3]= 'j'; Chaine[4]= 'o'; Chaine[5]= 'u'; Chaine[6]= 'r'; Chaine[7]= '\0'; }
Voici une autre façon (plus simple) d'initialiser une chaîne de caractères :
#include <stdio.h> void main(){ char Chaine[20+1]={ 'B', 'o', 'n', 'j', 'o', 'u', 'r', '\0' }; }
Il existe des caractères repérés par un code ASCII spécial permettant d'effectuer des opérations particulières à l'écran, l'imprimante ou le beeper de l'ordinateur. Ces caractères peuvent être représentés plus simplement en langage C++ grâce au caractère '\' suivi d'une lettre, qui précise qu'il s'agit d'un caractère de contrôle :
Caractère | Description |
---|---|
\0 | caractère de fin de chaîne |
\" | guillemet |
\\ | barre oblique inverse (antislash) |
\a | signal sonore (bip) |
\b | retour en arrière (backspace) |
\f | saut de page (pour l'imprimante) |
\n | retour à la ligne |
\t | tabulation |
\v | tabulation verticale (pour l'imprimante) |
En effet, certains de ces caractères ne pourraient pas être représentés autrement (un bip sonore ou un caractère de mise en page ne peuvent pas être représentés à l'écran). D'autre part, les caractères \ et " ne peuvent pas faire partie en tant que tels d'une chaîne de caractères, pour des raisons évidentes d'ambiguïté...
De nombreuses fonctions de manipulation de chaîne sont directement fournies. Ces fonctions se trouvent dans le fichier d'en-tête <string.h>, c'est la raison pour laquelle il faut ajouter la ligne suivante en début de programme :
#include <string.h>
Le fichier <string.h> contient les prototypes de nombreuses fonctions permettant de simplifier l'utilisation et la manipulation de chaînes (environ une quarantaine). Voici un bref aperçu de certaines de ces fonctions :
La fonction strcpy() (prononcez string copy) est une fonction qui permet de copier une chaîne entière de caractères dans une autre. Cette fonction admet comme paramètres les deux chaînes de caractères. Elle retourne 1 si la copie s'est effectuée correctement, sinon elle renvoie 0.
Syntaxe de la fonction strcpy() :
#include <string.h> strcpy(Nom_de_la_chaine_destination,Nom_de_la_chaine_source);ou encore :
strcpy(Nom_de_la_chaine_destination,"Chaîne de caractères");
La fonction strcmp() (prononcez string compare) est une fonction qui permet de comparer deux chaînes de caractères. En effet, il n'est pas possible d'effectuer simplement une comparaison de chaînes de caractères avec la simple utilisation des opérateurs habituels (==, !=, >=, etc.) à moins d'utiliser une boucle. Il est donc préférable d'utiliser cette fonction fournie en standard avec le C++. Cette fonction admet comme paramètres deux chaînes de caractères. Elle retourne 0 si les deux chaînes sont les mêmes. Si les chaînes sont différentes, elle renvoie bien évidemment 1.
Syntaxe de la fonction strcmp() :
#include <string.h> strcmp(Nom_de_la_chaine1,Nom_de_la_chaine2);ou encore :
strcmp(Nom_de_la_chaine1,"Chaîne de caractères");
27/12 03h01 | C/C++ Erreur de segmentation | Langage C |
14/09 10h42 | Critères de choix d'un langage/framework | Programmation |
21/07 11h53 | Comment débuter, quel langage? | Langages |
09/05 23h00 | Où trouver un compilateur C/C++ ? | Langage C |
05/05 16h31 | Utiliser des accents et autres caractères spéciaux | Programmation |
05/01 18h57 | Sed - Supprimer une ou plusieurs lignes d'un fichier | Sed |
24/08 01h03 | Création environnement OpenSSH-CHROOT | Linux |
10/04 21h29 | Screen | Shell |
07/04 14h07 | Langage C : concernant la concaténation | Programmation | 07/04 15h10 | 1 |
16/03 09h57 | LANGUAGE C | Programmation | 19/04 21h22 | 6 |
02/10 13h49 | Programmation langage C | Programmation | 02/10 20h19 | 2 |
06/06 18h22 | [langage c] : conversion chaine de caractere | Programmation | 07/06 16h22 | 7 |
14/02 12h16 | Langage C : listes chainées | Programmation | 06/01 21h58 | 4 |
28/01 15h36 | langage c: calcul longueur d une chaine | Programmation | 26/10 15h28 | 11 |
15/06 16h25 | langage c , liste chainées, fichiers ... | Programmation | 15/06 16h25 | 0 |
18/05 09h36 | traitement de chaine langage C | Programmation | 18/05 14h17 | 1 |
30/03 09h35 | Langage C pointeurs, creation de liste. | Programmation | 08/04 00h34 | 12 |
05/01 15h25 | [C++] chaine de caractères en minuscule | Programmation | 11/10 00h05 | 6 |
Dev-C++ - Dev-C++ est un environnement de développement intégré (IDE) en C/C++. Son compilateur est basé sur Mingw de GCC, mais il... | Catégorie: C/C++ Licence: Freeware/gratuit | |
Visual Basic Express - Le langage de programmation Visual Basic est historiquement dans les gènes de la société Microsoft. Avec plus de 30.000... | Catégorie: Visual Basic Licence: Freeware/gratuit | |
DS Monkey Audio - Filtre APE - Le format MonkeysAudio (extension *.ape) est un format de compression audio lossless (sans pertes) permettant de réduire la... | Catégorie: Plugins audio Licence: Freeware/gratuit | |
ICQ - ICQ est un client et un réseau de messagerie instantanée, proposant un certain nombre de fonctionnalités qui lui sont... | Catégorie: Messagerie instantanée Licence: Freeware/gratuit |