Vous êtes sur la page 1sur 4

ISET Gafsa

1
TP LES CHAINES DE CARACTERES EN C

1. Définition :
Une chaîne de caractères (string) est composée de caractères alphanumériques (texte), elle est un
cas particulier de tableau de caractère. En C, une chaîne de caractère est représentée par une suite
d’octets correspondant à chacun de ces caractères et d’un octet supplémentaire de code nul (‘ \ 0 ‘).

Déclaration :

char <nom_variable>[<longeur>] ;

2. Les fonctions de <stdio.h>


a) Affichage de chaînes de caractères
♦ printf avec le spécificateur de format %s permet d'intégrer une chaîne de caractères dans
une phrase.

♦ puts écrit la chaîne de caractères désignée par <chaine> sur stdout et provoque un retour
à la ligne.

Syntaxe :

puts(<chaine> )

En pratique,

puts(TXT); est équivalent à printf("%s\n",TXT);

b) Lecture de chaînes de caractères


- scanf avec le spécificateur %s permet de lire un mot isolé à l'intérieur d'une suite de
données du même ou d'un autre type.

- gets est idéal pour lire une ou plusieurs lignes de texte (p.ex. des phrases) terminées
par un retour à la ligne.

Exemple de lecture / Ecriture des chaînes de caractères

#include<stdio.h>
void main()
{
char nom[20],prenom[20],ville[20];
printf("donner la ville :");
gets(ville) ;

1
ISET Gafsa

puts(" donner le nom et le prénom : ") ;


scanf (" %s %s", nom, prenom); 2
printf(" bonjour % s %s de ",nom , prenom) ;
puts (ville) ;
}

3. Les fonctions de <string.h>


a) Les fonctions de concaténation
• La fonction strcat

strcat(ch1,ch2) ;

Copie ch2 à la suite de ch1.

• la fonction strncat

strncat(but,source,lg) ;

Travaille de façon semblable à strcat en offrant un contrôle sur le nombre de


caractères qui seront concaténés à la chaîne d’arrivée (but).

b) Les fonctions de comparaison de chaînes


• strcmp(ch1,ch2) :Compare deux chaînes et retourne une valeur entière :

- >0 si ch1 > ch2

- =0 si ch1 = ch2

- <0 si ch1<ch2

• strncmp(ch1,ch2,n) :Même que strcmp mais elle limite la comparaison au nombres de


caractères fixé par n.

• stricmp(ch1,ch2) : travaillent de ma même façon que strcmp stcncmp mais sans tenir
compte de la différence entre majuscule et minuscule.

• strnicmp(ch1,ch2,n) :travaillent de ma même façon que strcmp stcncmp mais sans tenir
compte de la différence entre majuscule et minuscule.

c) Les fonctions de copie de chaînes


• strcpy(destination,source): recopie la chaîne situé à à l’adresse source à l’emplacement de
l’adresse destination et retourne d’adresse de la chaîne destination.

• strncpy(dest,sour,n) : procède de manière analogue à strcpy, en limitant la recopie au


nombre de caractères fixés par l’expression entière n.
2
ISET Gafsa

d) Les fonctions de recherche dans une chaîne


3
• strchr(chaîne,caractère): renvoie 0 si le caractère n’apparaît pas dans la chaîne, cherche
dans la chaîne « chaîne » la première position ou apparaît le caractère « caractère ».

• strrchr(chaîne,caractère) : même que strchr, mais en explorant la chaîne à partir de la


droite et elle fournie donc, la dernière occurrence du caractère mentionné.

• strstr(chaîne,sous-chaine) : cherche, dans chaîne, la première occurrence complète de la


sous chaîne mentionnée.

• strlen(ch) : retourne une valeur de type entier qui correspond à la longueur de la chaîne ch
; bien entendue le caractère de fin de chaîne n’est pas comptabilisé .

4. Les fonctions de<stdlib.h>


La bibliothèque contient des déclarations de fonctions pour la conversion des nombres en
chaînes de caractères et vice-versa.

Conversion de chaînes de caractères en nombres

• atoi (s) : retourne la valeur numérique de s comme int;

• atol (s) : retourne la valeur numérique de s comme long ;

• atof (s) : retourne la valeur numérique de s comme float ;

5. Les fonctions de<ctype.h>


Les fonctions de classification suivantes fournissent un résultat du type int différent de zéro,
si la condition respective est remplie, sinon zéro.

La fonction retourne une valeur différente de zéro


isupper (c) si c est majuscule (‘A’,…..’Z’)
islower (c ) si c est minuscule
isdigit ( c) si c est un chiffre décimal
isalph ( c) si islower ( c ) ou isupper ( c )
isalnum ( c) si isalpha ( c ) ou isdigit ( c )
isxdigit ( c) si c est un chiffre hexadécimal
isspace (c ) si c est un signe d’espacement (‘ ‘, ‘\t ‘,…’\r’),

Les fonctions de conversion suivantes fournissent une valeur du type int qui peut être
représentée comme caractère; la valeur originale de reste inchangée:

• tolower (c) : retourne c convertie en minuscule si c est en majuscule.

• toupper (c) : retourne c convertie en majuscule si c est en minuscule.

3
ISET Gafsa

4
Exercices
Exercice 1 :

Ecrire un programme qui lit 5 mots, séparés par des espaces et qui les affiche
ensuite dans une ligne, mais dans l'ordre inverse. Les mots sont mémorisés
dans 5 variables M1, ... ,M5.

Exemple:

voici une petite phrase

phrase petite une voici

Exercice 2 :

Ecrire un programme qui demande l'introduction du nom et du prénom de


l'utilisateur et qui affiche alors la longueur totale du nom sans compter les
espaces. Employer la fonction strlen.

Exemple:

Introduisez votre nom et votre prénom:

Mickey Mouse

Bonjour Mickey Mouse!

Votre nom est composé de 11 lettres.

Exercice 3 :

Ecrire un programme qui permet d’éliminer toutes les lettres ‘a’ d’une chaîne
de caractère introduite à partir du clavier et de mettre la chaîne modifiée à la
place de l’ancienne.

Exercice 4 :

Ecrire un programme qui teste si une chaîne de caractère est palindrome


(exemple : radar, rotor, ada)

Vous aimerez peut-être aussi