5-Chaine de Caractères
5-Chaine de Caractères
5-Chaine de Caractères
Filière: SMA-S3
Chaine de caractères
Pr. Issam QAFFOU
Laboratoire Ingénierie des Systèmes d’Information
Département d’Informatique
FSSM-UCA
Version 2015/2016
(Automne)
Introduction
• Dans les chapitres précédents, nous avons manipulé des
variables contenant des valeurs numériques (int, float,
double, etc.).
• Nous avons vu le type char pour déclarer des variables
contenant un seul caractère.
• Dans ce chapitre, nous verrons comment combiner ces
caractères pour écrire des phrases et les affecter à une
variable.
• Il n’y a pas de type propre au chaines de caractères, mais on
utilise le type char.
• Puisqu’une chaine de caractères est une suite de caractères
concaténés alors on peut utiliser un tableau de type char.
19/10/2015 Programmation I 2
Type char
• Le type char permet de stocker un seul caractère, mais puisque l’ordinateur ne
comprend que des chiffres ces caractères sont transformés en chiffre. Voir
table ASCII.
• C’est pourquoi on dit le type char stocke des nombres compris entre -128 et
127.
• Vous pouvez vérifier ceci par le code suivant:
int main()
{
char lettre = ‘B';
printf("%d\n", lettre);
return 0;
}
B o n j o u r S M A - S 3 ! \0
19/10/2015 Programmation I 5
Chaine de caractères
• Exemple 2 char mot [4]; //déclaration
//Initialisation
Plus lourd!! Pas mot [0] =‘S’;
pratique mot [1] =‘M’;
mot [2] =‘A’;
mot [3] =‘\0’;
• Exemple 3
//comme un tableau
char txt [ ] = { 'B', 'o', 'n', 'j', 'o', 'u', 'r', '\0' }; Plus simple et plus
pratique
// spécifique aux chaîne de caractères
// le caractère de fin de chaîne est géré automatiquement
char ch [200] = "Bonjour" ;
//le ‘\0’ est rajouté automatiquement
19/10/2015 Programmation I 6
Chaine de caractères
Lecture d’une chaine de caractères
• On peut initialiser une chaine de caractères par la fonction scanf() en
utilisant %s pour le format correspondant.
• N.B: On ne peut pas affecter une chaine en dehors de sa déclaration, ni
affecter une chaine à une autre.
Exemple Résultat
#include <stdio.h>
#include <stdlib.h>
int main()
{
char filiere[1]; char txt1[8] ;
printf("Quelle est votre filiere? "); char txt2[]="Salut";
scanf("%s", &filiere); txt1= "bonjour"; // Impossible
printf("Vous avez saisi: %s", filiere); txt1=txt2; // Impossible
return 0;
}
19/10/2015 Programmation I 7
Chaine de caractères
Fonctions de manipulation
• On peut:
– comparer deux chaines de caractères,
– calculer la longueur d’une chaine,
– concaténer deux chaines,
– etc.
Pour ce faire, on utilse des fonctions.
• Tout d’abord, pour utiliser n’importe quelle fonction il faut
inclure la bibliothèque correspondante. Comme on fait
pour printf(), scanf(), pow(), etc.
• La bibliothèque qu’il faut inclure pour les chaines de
caractères est string.h
19/10/2015 Programmation I 8
Chaine de caractères
Quelques fonctions importantes
19/10/2015 Programmation I 11
Chaine de caractères
4- Concaténation de chaîne (strcat) : Exemple
• Cette fonction copie la chaîne source à
la fin de la chaîne cible (concaténation
de chaînes).
• La longueur de la chaîne résultante
est strlen(cible) + strlen(source).
• Syntaxe :
• char strcat(char ch1, char ch2);
• Le résultat sera dans ch1.
• N.B. si vous précisez les tailles des
tableaux, celle de ch1 doit être
suffisamment grande pour contenir
ch2
19/10/2015 Programmation I 12
Chaine de caractères
• 5- Comparaison de chaînes (strcmp) :
Exemple
• Cette fonction compare deux chaines
en débutant avec le premier caractère
de chaque chaîne et continuant avec
les suivants, jusqu'à ce que des
caractères de même rang soient
différents ou que l'une des chaînes soit
terminée.
• Valeur retournée :
– une valeur négative si ch1 < ch2
– une valeur nulle si les deux chaînes sont
égales
– une valeur positive si ch1 > ch2
• Syntaxe : int strcmp( char ch1, char
ch2);
19/10/2015 Programmation I 13
Chaine de caractères
19/10/2015 Programmation I 14
Chaine de caractères
19/10/2015 Programmation I 15
Chaine de caractères
19/10/2015 Programmation I 16
Chaine de caractères
19/10/2015 Programmation I 17