Travaux Dirigés Programmation en C - 2
TD2 – Les Chaines de caractères
Exercice 1 : Ecrire un programme qui lit au clavier un mot (d'au plus 30 caractères) et qui l'affiche "à
l'envers".
Exercice 2 : Créer une fonction qui permet de supprimer un caractère d’une chaine de caractère void
supchar( char *CH, char c). Cette fonction doit permettre de créer le texte ainsi modifié, en mémoire, à
la place de l'ancien et d’afficher le texte modifié.
Exercice 3 : Reprendre le traitement de l’exercice précédent mais en utilisant cette fois les fonctions :
gets() pour saisir la chaine.
Strchr() pour effectuer une recherche d’une liste de char dans une autre liste de char
Strcpy() pour copier la nouvelle chaine dans l’ancienne
Puts() pour afficher la nouvelle chaine.
Exercice 4 : Écrire un programme principal permettant à l’utilisateur de saisir une chaîne de
caractères et affichant cette chaîne en séparant les lettres par des virgules (si l’utilisateur saisit
bonjour, l’affichage doit être b,o,n,j,o,u,r). Utiliser le parcours avec indices puis le parcours avec
pointeurs.
Exercice 5 : Définir une fonction retournant le nombre d’occurrences d’une lettre dans une chaîne de
caractères.
int nbocc(char *ch, char lettre)
Exercice 6 : Définir une fonction void enMajuscules(char ch[]) prenant en paramètre une chaîne de
caractères et remplaçant dans cette chaîne toutes les lettres minuscules par les majuscules associées
(Maj=Min+(int)’A’-(int)’a’). Appeler cette fonction dans un programme pour afficher une chaîne en
majuscules.
Exercice 7 : Créer une fonction char *saisirChaine() qui permet de saisir une chaine de caractère en
utilisant une allocation dynamique. Créer ensuite un programme test.
Exercice 8 : Ecrire un programme C qui permet de saisir votre nom et prénom, puis les stocke
séparément en mémoire et les affiche à la fin. Le nom et le prénom seront séparés par un espace.
Exercice 9 : Créer une fonction int tailleChaine(char *s) qui retourne le nombre de caractères de la
chaîne s, le caractère ’\0’ n’étant pas compté.
Exercice 10 : Créer une fonction char * copieChaine(char *dest, char *src) qui copie la chaîne de
caractères src à la fin de la chaine dest. Cette fonction devra retourner le pointeur sur la chaîne dest.
Voici un exemple d’utilisation de cette fonction. (On suppose que les chaînes sont bien formées, c’est-
1
à-dire que le dernier caractère de chaque chaîne est ’\0). Ecrire un programme permettant de tester
cette fonction.
Exercice 11 : Même Exercice que le précèdent mais cette fois il faut que la fonction vous permet de
concaténer de les chaînes de caractères. La chaîne résultante sera stockée dans une zone mémoire
pointée par une variable globale. Cette fonction accepte deux paramètres : les deux chaînes à
concaténer.
Prototype de la fonction : void Concat(char *CH1,char *CH2).
Exercice 12 : Un palindrome est une chaîne de caractères qui est égale à son image miroir. Exemples :
ELLE et LAVAL sont des palindromes. Ecrire une fonction palindrome qui vérifie qu’une chaîne de
caractères est un palindrome. Elle accepte un tableau de caractères et retourne la valeur « vrai » si son
paramètre contient un palindrome et faux dans le cas contraire. char *palindrome(char *CH1).
Exercice 13 : Ecrire un programme qui lit deux chaînes de caractères, et qui les compare en fonction
des codes des caractères de la machine (ici: code ASCII). Cette fonction retourne -1 si la première
chaîne précède la deuxième, 1 si la deuxième précède la première, 0 si elles sont égale. Prototype :
int compchaine(char *,char *).
Exercice 14 : Ecrire une fonction qui permet de trier une chaine de caractère saisie à l’entrée suivant
un ordre alphabétique.
Exercice 15 : Ecrire une fonction qui permet de saisir un tableau de chaine de caractère. Cette fonction
aura comme argument le nombre de chaine à saisir. Ecrire un programme Test :
Prototype de la fonction : char **saisirtablechaine(int n).
Exercice 16 : Ecrire une procédure void Tri_Liste(char **T, int n) qui prend en argument un double
pointeur pour stocker une liste des nom et prénom (tableau de chaine) et un entier pour stocker le
nombre de chaine saisie. Cette procédure aura pour rôle le tri par ordre alphabétique de la liste saisie.
Pour le tri utiliser l’algorithme du tri par insertion et pour la comparaison entre deux chaine utiliser
la fonction strcmp() de la bibliothèque <string.h>
2
Exercice 17 : créer une fonction **ajoutchaine(char **tab, int n ; int m) qui permet d’ajouter un certain
nombre m de chaines de caractère dans un tableau « tab » qui sera passé en argument ainsi que sa
dimension. Appeler cette fonction dans le programme principale de l’exercice-16 afin d’ajouter le nom
et prénom d’une personne.