Tp8_ Les Chaines de Caracteres
Tp8_ Les Chaines de Caracteres
Tp8_ Les Chaines de Caracteres
8
Les chaines de caractères
Objectifs du TP
Objectifs spécifiques de ce TP
1
8
Notes de cours :
1. Déclaration
char nom_chaîne[taille];
Atelier
Les chaines de caractères
I. Les chaînes de caractères
Il n'y a pas de type chaîne de caractères prédéfini en C. Par convention, les chaînes de
caractères sont représentées à l'aide de tableaux de caractères à un indice. Le principe
est de stocker dans un tableau suffisamment grand, les différents caractères d'une
chaîne, suivis par un caractère supplémentaire '\0' (code ascii = 0 : caractère nul) qui
fait le rôle de marqueur de fin de chaîne. Les caractères se trouvant à la suite de '\0'
seront ignorés.
2. Initialisation
Les tableaux chaîne de caractères peuvent être initialisés par une liste, mais aussi par
une chaîne de caractères constante entre guillemets.
Exemple :
char chaine[6]="Salut";
est équivalente à
char chaine[6]={'S','a','l','u','t','\0'};
Remarque :
- Si on utilise une list e pour initialiser la chaîne, le caractère nul (' \0') n'est pas rajouté automatiquement.
- Lorsque le compilateur rencontre une chaîne de caractères, il la converti automatiquement en tableau et rajoute le
caractère nul à la fin.
Exemple :
char prenom[10]="sami";
012345…9
's 'a 'm 'i '\0'
' ' ' '
char phrase[]="Bonjour\n\n";
8
2
Atelier
Les chaines de
caractères
➔ Le compilateur peut calculer la longueur d'une chaîne. Dans ce cas, la chaîne ne pourra plus être allongée.
➔ Les caractères d'interligne occupent 2 caractères dans le texte ' \' et 'n', mais un seul octet dans le programme
exécutable et en mémoire central e.
0123456789
'B 'o 'n 'j 'o 'u 'r '\n' '\n' '\0'
' ' ' ' ' ' '
a. Lecture
scanf("%s",ch)
- scanf ne permet pas de lire des chaînes de caractères contenant des blancs ou des
tabulations.
- On ne doit pas utiliser l'opérateur "adresse de" (&) lors de la lecture d'une chaîne
de caractères, les tableaux étant de toute façon passés par référence (les noms des
tableaux représentent déjà des adresses).
gets(tableau_de_caractères)
b. Ecriture
Atelier
Les chaines de caractères
Les chaînes de caractères en C étant des tableaux, il n'est pas possible d'utiliser
l'opérateur d'affectation '=' pour les copier.
strcpy(ch_destination,ch_source)
strncpy(ch_destination,ch_source,n)
Exemples :
On utilise la fonction :
int strlen(chaîne)
Exemple :
int longueur;
longueur = strlen(ch1); /*longueur est égale à 5 */
On utilise la fonction :
int strcmp(chaîne1,chaîne2);
qui retourne :
- 0 si les deux chaînes sont identiques ;
- un nombre négatif si la 1ère est alphabétiquement inférieure à la 2ème ; -
un nombre positif si la 1ère est alphabétiquement supérieure à la 2ème.
8
4
int compare;
Atelier
Exemples : Les chaines de caractères
1) Exemple 1
compare=strcmp(ch1,"salut"); /*compare =0 */
compare=strcmp(ch1,"Bonjour");/*compare prend une valeur positive */
2) Exemple 2
int strncmp(chaîne1,chaîne2,n);
compare les n 1ers caractères de ch1 et ch2.
3) Exemple 3
int strcmpi(chaîne1,chaîne2)
fonctionne comme strcmp() mais ne fait pas distinction entre majuscules et
minuscules.
strcat(chaîne1,chaîne2)
Ajoute une copie de chaîne2 à la fin de chaîne1.
strncat(ch1,ch2,n);
Ajoute les n premiers caractères de ch2 à la fin de ch1.
Exemples :
char ch1[30]="Bonjour";
char ch2[20]=" tout le monde";
strcat(ch1,ch2); /*ch1 contient la chaîne "Bonjour tout le monde" */
e. Conversion majuscules-minuscules
strlwr(chaîne)
Convertit toutes les majuscules en minuscules sans changer les autres caractères.
strupr(chaîne)
Convertit toutes les minuscules en majuscules sans changer les autres caractères.
toupper(caractère)
convertit le caractère fourni en paramètre en majuscule.
tolower(caractère)
8
Atelier
strchr(chaîne,caractère)
Les chaines de caractères
f. Recherches
strrchr(ch,car)
même chose que strchr, mais commence la recherche à partir de la fin de la chaîne.
strstr(chaîne1,chaîne2)
retourne un pointeur sur la première occurrence de ch2 dans ch1 ou Null.
8
6
chaînes
Atelier
Les chaines de caractères
Travail à faire :
Écrire un programme C qui lit une ligne de texte (ne dépassant pas 100 caractères) la
mémorise dans une variable TXT et affiche ensuite:
a) la longueur L de la chaîne.
b) le nombre de 'e' contenus dans le texte.
c) toute la phrase à l'envers, sans changer le contenu de la variable TXT. d) toute
la phrase à l'envers, après avoir inversé l'ordre des caractères dans TXT:
voici une petite phrase !
! esarhp etitep enu iciov
Exercice 3 : Palindrome
Écrire un programme C qui permet de saisir une chaîne de caractères puis de dire si elle
est palindrome. Une chaîne de caractères est dite palindrome si elle peut se lire de
gauche à droite ou de droite à gauche.
Exemples
"elle", "radar", "sos", "1234321", "", "A"...
Exemples
Introduisez la première chaîne : ABC
Introduisez la deuxième chaîne : abc
« ABC » précède « abc »
Exemple
Cette ligne contient quelques lettres e.
Ctt lign contint qulqus lttrs .
8
7
Atelier
Les chaines de caractères