Vous êtes sur la page 1sur 13

Chapitre 05:

Les Chaines de Caractères


Niveau: 3B/2P
Date: 12-10-2020

1
Plan
• Les tableaux de caractères

• Les chaînes de caractères

• Longueur et copie de chaînes de caractères

• Concaténation et comparaison

• Les tableaux de chaînes

2
Cas particulier: Les tableaux de caractères
char nom[10];

Ces tableaux suivent les mêmes règles que les tableaux de nombres.
Mais ils ont en plus certaines particularités.

Un tableau de caractères = Une chaîne de caractères

Chaîne = séquence de caractères terminée par le caractère


''fin de chaîne'' : '\0'

3
Chaînes de caractères: Suite
• Déclarations: Ce caractère «fin de chaîne» est ajouté
automatiquement dans les cas c) et d)
a) char Mot[10];

b) char Mot[10] = {'B', 'o', 'n', 'j','o', 'u', 'r', '\0'};


c) char Mot[10] = "Bonjour";

d) char Mot[] = "Bonjour"; /* Taille sera 8 = 7+1 */


e) char *Mot; Mot = (char*) malloc(10);
char Mot[10] = "Bonjour";

M ]

]
]

]
]

]
[4

[9
[0

[1

[5

[6
[2

[3

[7

[8

ot
ot
ot

ot

ot

ot
ot

ot

ot

ot
M

M
M

M
M

M
Mot B o n j o u r \0 ? ?
4
Les chaînes de caractères (Affichage)
• Affichage: La mieux appropriée à tous les cas

• Avec printf ( )
char Ville[] = “Tunis”;
printf(“Votre ville:%s”, Ville);
Votre ville:Tunis

• Avec puts ( )
char Ville[] = “Tunis”; Votre ville:
puts(“Votre ville:”); Tunis
puts(Ville);

• Avec fputs ( ) 🡪 Ajoute automatiquement


un retour à la ligne
char Ville[] = “Tunis”; Votre ville:Tunis
fputs(“Votre ville:”,stdout);
fputs(Ville,stdout);
5
Les chaînes de caractères (Saisie)
• Saisie:
• Avec scanf ( ) Notez l’absence de & dans ce cas

char prenom [30];


printf (“Votre prénom: ”); La chaîne saisie par
scanf (“%s”, prenom); l’utilisateur
printf (“Votre prénom est %s”,prenom);

Votre prénom: Mohamed Ali


Votre prénom est Mohamed

scanf +%s : s'arrête aux espaces, tabulations et retours de


ligne 6
Les chaînes de caractères (Saisie)
• Avec gets ( ) Saisie s’arrête sur saut de ligne ou EOF
char prenom [30];
printf (“Votre prénom: ”); Votre prénom: Mohamed Ali
gets (prenom); Votre prénom est Mohamed Ali
printf (“Votre prénom est %s”,prenom);

La mieux appropriée à tous les cas


• Avec fgets ( )
fgets : lit tous les caractères jusqu'au retour à la ligne (compris)
Au maximum, fgets lit le nombre de caractères indiqué - 1
char prenom [30];
printf (“Votre prénom: “);
fgets (prenom, 10, stdin);
printf (“Votre prénom est %s”, prenom);

Votre prénom: Mohamed Ali


Votre prénom est Mohamed A
7
Longueur et copie de chaînes de caractères
• Bibliothèques: stdio.h et string.h
⮚ strlen: Longueur d'une chaîne de caractères, renvoie le
nombre d’octets occupés par une chaîne
char sport[20] = "Volley ball";
int longueur;
longueur = strlen (sport);
printf (“%s comporte %d caractères”, sport, longueur);

⮚ strcpy: copie d'une chaîne de caractères dans une autre


char chaineTV1[20] = “BeinSport”;
char chaineTV2[20];
strcpy( chaineTV2, chaineTV1);
strcpy( chaineTV2, “Eurosport”);

8
Concaténation et comparaison
⮚ strcat: ajout d’une chaîne de caractères à la fin d’une autre
char annee[20] = “2eme”;
char filiere[20]= “ info”;

strcat(annee, filiere);
printf (“%s”, annee); 2eme info

⮚ strcmp: compare deux chaînes ch1 et ch2 selon l’ordre


lexicographique et retourne:
!= 0: si ch1!=ch2 char chaineTV1[20] = “BeinSportHD1”;
==0: si ch1=ch2 char chaineTV2[20] = “BeinSportHD2”;
Int x;
x = strcmp( chaineTV1, chaineTV2);

🡪 strcmp: ne distingue pas majuscules et miniscules


9
Tableau de chaines

10
Tableau de chaines

- Un tableau de chaînes de caractères correspond à un tableau à


deux dimensions de type char, où chaque ligne contient une chaîne
de caractères.

- Déclaration:
Char < Nom Tableau> [NbChaines][longueur+1]

Exemple:

char jours [7][9] ; /* réserve 7 mots de longueur 9 caractères


dont 8 significatifs */
11
Tableau de chaines

- Initialisation: lors de la déclaration on peut initialiser les


composantes par des chaînes constantes.
Exemple:
char jours[7][9] ={"lundi","Mardi","Mercredi","Jeudi", "Vendredi","Samedi", "Dimanche"};

- Accès:
⮚ Pour accéder à une chaîne, il faut indiquer la ligne correspondante.
Exemple:
char jours[7][9] ={"lundi","Mardi","Mercredi","Jeudi", "Vendredi","Samedi", "Dimanche"};
printf ("c'est %s\n" , jours [0] ); /* c'est lundi */
12
Tableau de chaines

⮚ Pour accéder à un caractère d’une chaîne, il faut indiquer la


ligne correspondante et l'indice du caractère dans la chaîne .

Exemple:
printf ("%c %c \n", jours [0][0],jours [0][4]);

- Affectation: Utiliser strcpy pour affecter une chaîne à une


composante d'un tableau de chaînes.

Exemple:
strcpy ( jours[6],"Sunday");
13

Vous aimerez peut-être aussi