pas en langage C. En langage C: Une chaîne de caractères est un tableau d’élément de type char. Dont le dernier élément est le caractère nul ‘\0’. Ce caractère n’est pas affichable. Il indique la fin de la chaîne de caractères. Exemple: La chaîne "Bonjour" est représentée par : B o n j o u r \0 Les chaînes de caractères 1
de caractères. De taille LongeurChaine + 1 (réservation de place en mémoire) char Nom_du_tableau[Nombre_elements + 1] ; On peut mettre une taille max (ex: 200). La chaîne se terminera au ‘\0’. (on aura réserver de la place pour rien) Exemples B o n j o u r \0 Les chaînes de caractères 2 char mot [ 50 + 1] ; char phrase [ 250 ] ;
3 char mot [3 +1 ]; //déclaration //Initialisation mot [0] =‘a’; mot [1] =‘i’; mot [2] =‘e’; mot [3] =‘\0’; A la déclaration //comme un tableau char phrase [200] = { 'B', 'o', 'n', 'j', 'o', 'u', 'r', '\0' }; // spécifique aux chaîne de caractères // le caractère de fin de chaîne '\0' est géré automatiquement char phrase [200] = "Bonjour" ; // On a réservé de la place pour rien. On a besoin de seulement d’un tableau de longueur 8 (7 pour "Bonjour" + caractère null ‘/0’)
déclaration // On peut ne pas attribuer la taille de tableau lors de l’initialisation. // La taille du tableau sera égale à la longueur de la chaine de caractères // + le caractère null \0 qui sera ajouté à la fin du tableau automatiquement. char phrase [] = { 'B', 'o', 'n', 'j', 'o', 'u', 'r', '\0' }; char phrase [] = "Bonjour" ;
] ); // Déclaration de la fonction LongueurChaine int main() { char chaine[255] = "Bonjour"; int longueur = LongueurChaine(chaine); cout<<longueur<<endl; // Le programme affiche 7 } /* Définition de la fonction LongueurChaine. */ int LongueurChaine( char ch[ ] ) { int i = 0; while ( ch[i] != ‘\0’) // on parcours la chaîne jusqu’à arriver au caractère ‘\0’ i++; return i; }
de la déclaration. On ne peut pas affecter une chaîne à une autre. On ne peut pas comparer deux chaînes . Les chaînes de caractères 8 char mot[8] = "bonjour"; // OK char mot[8] ; mot = "bonjour"; // ERREUR char mot1[8] ; char mot2[8] ; // déclaration de deux chaînes … mot1 = mot2; // ERREUR char mot1[8] , char mot2[8] ;// déclaration de deux chaînes … if(mot1 == mot2) // ERREUR
la spécification de champ %s dans scanf pour lire la chaîne Lire les caractères jusqu'au prochain espace blanc rencontré Le language C stocke le caractère nul (\0) après le dernier caractère d'espace non blanc Les chaînes de caractères 9
on lire une chaine de caractère* dans le variable name printf(“Lire votre nom et prénom: ”); char name[14]; scanf(“%s”, &name); printf(“Votre nom et prénom: %s”, name); } > Lire votre nom et prénom: Adel Boughida Votre nom et prénom: Adel Problème: scanf() permet de lire seulement les caractères avant le premier espace rencontré Solution: utiliser gets()
la lecture d'une chaîne à l'aide de scanf() est qu'elle ne lit pas les espaces. • Si la chaîne à lire en tant qu'entrée contient des caractères d'espace blanc intégrés, utilisez la fonction standard gets(). Les chaînes de caractères 11
on lire une chaine de caractère* dans le variable name avec gets printf(“Lire une chaine SVP: ”); char chaine[10]; gets(chaine); printf(“La chaine: %s”, chaine); } > Lire une chaine SVP: Math info La chaine: Math info Problème: scanf() permet de lire seulement les caractères avant le premier espace rencontré Solution: utiliser gets()
spécification de champ %s dans printf pour écrire une chaine de caractères. les caractères de la chaîne qui sont imprimées sont jusqu'à \0 En utilisant puts() L'inconvénient de l'impression d'une chaîne à l'aide de printf() est qu'elle n'imprime pas d'espaces blancs. • Si la chaîne à imprimer en tant que sortie contient des caractères d'espacement intégrés, utilisez la fonction standard puts(). Les chaînes de caractères 13
de caractères. (définies dans string.h). strlen(char chaine[ ]) Retourne la longueur de la chaîne chaine. strcpy(char chaineDest[], char chaineSource[]) Copie la chaîne chaineSource dans chaineDest. Les chaînes de caractères 15
char chaine2[]) Retourne 0 si les deux chaînes sont identiques. strcat (char chaineDest[] , char chaineSource[] ) Recopie la chaine chaineSource à la suite de chaineDest. Strnset (char chaine [], char c, int n) Elle remplace les n premiers caractères d'une chaîne par un caractère donné c. Si n est supérieur à la longueur de la chaîne, la longueur de la chaîne est utilisée à la place de n. Les chaînes de caractères 16
on déclare 2 chaînes char chaine1[20] = "bonjour"; char chaine2[20]; // On copie le contenu de chaine1 dans chaine2 strcpy(chaine2, chaine1); printf("%s", chaine2); // On compare si les deux chaines // sont identique if(strcmp(str, str2) == 0) { printf("les deux chaines sont identiques"); } } bonjour les deux chaines sont identiques Strcmp() and strcpy()
on déclare une chaîne char chaine1[20] = "bonjour"; int longueur; // Calcul de longueur de la chaine1 longueur = strlen(chaine1); printf(" La longueur de la chaine égale à %d", longueur); } La longueur de la chaine égale à 7 Strlen()