0% ont trouvé ce document utile (0 vote)
27 vues7 pages

Chapitre 7 Les Chaînes de Caractères: Objectifs

Transféré par

Alia Nsibi
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
27 vues7 pages

Chapitre 7 Les Chaînes de Caractères: Objectifs

Transféré par

Alia Nsibi
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

9/17/2023

1 2
Objectifs

Chapitre 7  Connaitre les chaines de caractères et leurs caractéristiques


 Apprendre la manipulation des chaines de caractères en
algorithmique et en langage C
Les chaînes de caractères  Définir les fonctions prédéfinies des chaines de caractères en
algorithmique et en langageC

ASD II

1 2

3 4
Plan Introduction

1) Introduction
 Le type de données chaine de caractères est manipulé comme un tableau
2) Définition & Déclaration de caractères mais il diffère dans la déclaration.
3) Opérations sur les chaînes  Nous allons détailler dans cette partie:
4) Fonctions & Opérations prédéfinies  La declaration
5) Tableaux de chaînes de caractères  La manipulation
6) Conclusion  Quelques exemples d’utilisation

ASD II ASD II

3 4
9/17/2023

5 6
Définition-Déclaration Définition-Déclaration (suite)

Exemple:
 Une chaîne de caractère:  Pour représenter la chaîne de caractères " bonjour ", un tableau de huit caractères est
 Est une structure de données homogène, défini:
char ch[8] = {‘b’, ’o’, ’n’, ’j’, ’o’, ’u’, ’r’, '\0'}; ch: ‘b’ ‘o’ ‘n’ ‘j’ ‘o’ ‘u’ ‘r’ ‘\0’
 Permet le stockage, dans une même variable, un nombre fini d'éléments de types caractères.
Ou
 C’est un tableau de caractères qui se termine par le caractère ‘\0’ (En C, NULL). char ch[8] ="bonjour";
 Syntaxe:
En Algorithme En C
En Algorithme En C var : ch : chaine[50] //déclaration d’une chaine sans
//chaine de 49 caractères + caractère de fin de initialisation
var : nom_chaine: chaine[taille] char nom_chaine [taille]; // taille connue chaine ‘\0’ char ch[50];
//déclaration d’une chaine avec
initialisation
char nom[20]= {‘a’, ‘l’, ‘i’, ‘\0’};
ASD II ASD II
char ch1[10]=‘’cours’’;

5 6

7 8
Opérations sur les chaines Opérations sur les chaines (suite)

 Pour accéder à une case d'une chaine donnée, il faut utiliser:  Toutes les opérations élémentaires peuvent être appliquées sur une chaine de caractères.
 Exemple : En Algorithmique En C
 le nom (identificateur) de la variable, et
//lire en bloc la chaine "nom"
 le numéro de la case.
lire(nom) scanf ("%s", nom) ; ou gets (nom) ;
 nomChaine [indice] //afficher en bloc la chaine "nom"
écrire(nom) printf("%s", nom) ; ou puts (nom) ;

 Exemples: //affecter le caractère ‘A’ à la 2ème case de la chaine mot


ch: ‘b’ ‘o’ ‘n’ ‘j’ ‘o’ ‘u’ ‘r’ ‘\0’ mot[1]←’A’ mot[1]=‘A’;
indice: 0 1 2 3 4 5 6 7 //lecture du caractère d’indice 20 de la chaine nom
lire (nom[20]) scanf("%c ", &nom[20]);
ch[3]; // ‘j’ //affecter la chaine "ABCD" à la chaine mot
ch[5]; // ‘u’ ASD II
mot ←"ABCD" mot = "ABCD" ;
ASD II

7 8
9/17/2023

9 10
Remarques en C Remarques en C (suite)

 L’affichage d’une chaine de caractères peut être fait en bloc ou bien caractère par Exemple2: Affichage d’une chaine en bloc
caractère.
void main()
{
Exemple1: Affichage d’une chaine caractère par caractère char ch1[20] ; //déclartion d'une chaine de taille max=20
void main()
printf("donner une chaine :") ;
{
char ch[20]="cours programmation"; /* déclaration d'une chaine initialisée*/ scanf("%s", ch1) ; //ou gets(ch1) ; // Saisie d'une chaine

char ch2[14]= "Programmation" ; // déclaration d'une chaine initialisée


printf("la valeur de la chaine est:");
printf (" la chaine est : %s",ch2) ; //ou puts(ch2) ; //Affichage de la chaine
for(int i=0; ch[i] != '\0’; i++) /* parcourir la chaine ch */
}
printf("%c", ch[i]); /* affichage caractère par caractère */
}  Les chaines de caractères peuvent être comparées sur la base de l'ordre des codes ASCII de
chacun des caractères qui la constituent.
ASD II ASD II

9 10

11 12
Fonctions et opérations prédéfinies Les opérateurs en Algorithme

 La concaténation (+) : permet de concaténer deux chaines (en C n’existe pas)


 Les opérateurs en algorithmique Exemple :
 Les fonctions en algorithmique var : ch1, ch2 : chaine[20] // déclaration de deux chaines
 Les fonctions en C ch1←"bonjour" // initialiser ch1 à la chaine "bonjour "
ch2←"à tous" // initialiser ch2 à la chaine "à tous "
ch1←ch1+ch2 // concaténer ch1 et ch2 dans la variable ch1
écrire (ch1) // afficher le contenu de ch1  "bonjour à tous"

ASD II ASD II

11 12
9/17/2023

13 14
Les opérateurs en Algorithme (suite) Les fonctions en Algorithme

 Ajout d'un caractère (°) : permet d'ajouter un caractère à droite ou à gauche d'une chaine  longueur (chaine) : renvoie le nombre de caractère d'une chaine sans le caractère de fin de la
définie. chaine ’\0’.
Exemple : Exemple :
var : ch1 : chaine[20] // déclaration de ch1 var : ch : chaine[10]
ch1←"onjou" // initialiser ch1 à la chaine "onjou " L : entier
ch1←'B' ° ch1 // Ajouter le caractère ‘B’ à gauche de ch1 ……
écrire (ch1) // afficher le contenu de ch1  "Bonjou" ch←"bonjour"
ch1← ch1 ° ‘r’ // Ajouter le caractère ‘r’ à droite de ch1 L ← longueur(ch)
écrire (ch1) // afficher le contenu de ch1  "Bonjour" écrire("longueur de ch=", L)  L=7

ASD II ASD II

13 14

15 16
Les fonctions en Algorithme (suite) Les fonctions en Algorithme (suite)

 souschaine(chaine, position, n) : renvoie une sous-chaine (extrait de la chaine), de n  gauche(chaine, n) : renvoie les n caractères les plus à gauche dans une chaine.
caractères, à partir d’une position donnée. Exemple:
Exemple : var : mot, ch : chaine[255]
var : mot, ch : chaine[255] …..
…… mot ← "bonjour"
mot ← "bonjour" ch ← gauche(mot, 3)  "bon"
ch ← souschaine(mot, 1, 3) "onj"

ASD II ASD II

15 16
9/17/2023

17 18
Les fonctions en Algorithme (suite) Les fonctions en Algorithme(suite)

 droit(chaine, n) : renvoie les n caractères les plus à droite dans une chaine.  trouve(chaine1, chaine2):
Exemple :  renvoie la position de chaine2 dans chaine1.
var : mot, ch : chaine[255]  renvoie 0 si chaine 2 n'existe pas dans chaine 1.

……. Exemple :
var : ch1, ch2 : chaine[255]
mot ← "bonjour"
x : entier
ch ← droit(mot, 4) "jour"
…..
ch1 ← "bonjour"
ch2 ← "jour"
x ← trouve (ch1, ch2) // x = 3
ASD II ASD II

17 18

19 20
Les fonctions en C Les fonctions en C (suite)

 Toutes les fonctions de manipulation des chaines de caractères en C nécessitent l’utilisation de  strcpy (chaine2, chaine1) : permet de copier chaine1 vers chaine2
Exemple:
la bibliothèque « string.h »
char ch1[20], ch2[20];
 strlen(ch) : renvoie le nombre de caractère de la chaine « ch » sans le caractère fin de la ch1= "bonjour" ;
chaine ’\0’. strcpy (ch2, ch1);
puts (ch2); //  bonjour
Exemple:
 strncpy (chaine2, chaine1,n) : permet de copier n caractères de chaine1 vers chaine2
char ch[10] = "bonjour"; Exemple:
char ch1[20], ch2[20];
int L;
ch1= "bonjour" ;
L= strlen(ch); strncpy (ch2, ch1, 3);
printf ("ch2=%s", ch2); //  "bon"
printf("longueur ch=%d", L); /*  longueur ch= 7 */ ASD II ASD II

19 20
9/17/2023

21 22
Les fonctions en C(suite) Les fonctions en C(suite)

 strcat (chaine1, chaine2) : Ajoute chaine2 à la fin de chaine1  strcmp(chaine1, chaine2): permet de comparer lexicographiquement deux chaines: chaine1 et
Exemple: chaine2. La fonction retourne R:
char ch1[20] = "bon";  R=0 si chaine1 == chaine2
char ch2[20] = "jour";
strcat(ch1, ch2);  R<0 si chaine1 précède chaine2
puts(ch1); // “bonjour”  R>0 si chaine1 suit chaine2
Exemple:
 strncat (chaine1, chaine2, n) : copier n caractères de la chaîne chaine2 à la fin de la chaîne1
(même le caractère ‘\0’) char ch1[20], ch2[20];
Exemple: int res;
char ch1[20] = "bonjour"; ch1= "bon"; ch2= "jour";
char ch2[20] = "monsieur";
res=strcmp(ch1, ch2);
strncat(ch1, ch2, 2);
printf(" ch1=%s", ch1); //  ch1 = “bonjourmo” ASD II printf("%d", res); // res = -1 ASD II

21 22

23 24
Activité1 Les tableaux de chaines de caractères

 Un tableau de chaines de caractères est un tableau dont chaque élément est une chaine. Chaque case
Ecrire un algorithme (programme C) qui permet d’afficher les caractères contient ainsi un tableau de caractères.
d’une chaine dans l’ordre inverse  Tableau à deux dimensions de caractères.
Exemple: entrée: "bonjour" sortie: "ruojnob"  Déclaration:

char nomtableau [Nbr_chaine ][Nbr_caractères_par_chaine]

 Exemples:
 char JOUR [7] [9]= {"lundi", "mardi", "mercredi", "jeudi", "vendredi", "samedi", "dimanche"};
 7 chaines de longueur max 9 caractères
 char MOIS [12][6]= {"jan", "fev", "mars","avr", "may", "juin","juil","aout", "sep", "oct","nov", "dec"};
 12 chaines de longueurs 6 caractères
ASD II ASD II

23 24
9/17/2023

25 26
Les tableaux de chaines de caractères(suite) Conclusion

Exemple : char JOUR [7] [9]= {"lundi", "mardi", "mercredi", "jeudi", "vendredi", "samedi", "dimanche"};
 Dans ce chapitre nous avons :
char MOIS [12][6] = {"jan", "fev", "mars","avr", "may", "juin","juil","aout", "sep", "oct","nov", "dec"};
 Présenté la définition et la déclaration d’une chaine de caractères
 Afficher une chaine :
printf("%s", JOUR[2])  permet d’afficher "mercredi"  Détailléles différentes fonctions prédéfinies en algorithme et en C pour
printf("%s", MOIS[0])  permet d’afficher "jan" la manipulation des chaines de caractères
 Afficher des caractères :  Manipulé les tableaux de chaines de caractères
for (i=0 ;i<7 ;i++)
printf("%c", JOUR[i][0]) ;  permet d’afficher le premier caractère de chaque chaine
 Affectation : pas d’affectation directe
JOUR [4] = "vendredi" ; => Utiliser strcpy : strcpy(JOUR[4], "vendredi") ;
ASD II ASD II

25 26

Vous aimerez peut-être aussi