Licence Informatique Université Bordeaux I Initiation à la Programmation

Travaux Dirigés

Caractères, chaînes, tableaux

– Comprendre l’importance des constantes pour la portabilité.

– Travailler sur les chaînes de caractères.

– Utiliser des tableaux à plusieurs entrées (dimensions). Un compte-rendu du dernier exercice vous sera demandé la semaine prochaine.

préparation

1. Sortir le nécessaire pour prendre des notes ;

2. recopier à votre racine le répertoire ~wacren/IP/3_caracteres ainsi que son contenu (com-

mande cp -r ~wacren/IP/3_caracteres ~/IP).

Exercice 1.

1. Compiler le fichier ~IP/3_caracteres/affiche_char/affiche_char.c et interpréter le mes-

sage d’avertissement. Exécuter le programme, puis le tracer sous gdb.

2. Mettre au point le programme affiche_char.c en utilisant :

– la fonction int isprint (int c) du module prédéfini ctype.h ;

– les constantes CHAR_MIN et CHAR_MAX du module limits.h.

3. Inclure, ensuite, le module locale.h et insérer au début du programme principal la ligne

setlocale (LC_ALL,"fr_FR");

Constater les différences.

Exercice 2. On définit un classeur comme une séquence de chaînes de caractères non vides ordonnée lexicographiquement et terminée par la chaîne vide, comme l’illustre l’exemple suivant :

{
"amiante",
"emmener",
"équation",
"équité",
"zéphyr",
"",
}

Dans le fichier ~IP/3_caracteres/classeur/classeur.h on trouve la définition du type classeur et de quelques fonctions pour l’utiliser.

1. Créer un fichier makefile et le fichier source du module classeur.

On pourra utiliser la fonction strcoll pour comparer deux chaînes de caractères et strcpy pour recopier une chaîne dans un tableau de caractères. On pourra expérimenter le tri par insertion et la recherche dichotomique vus en ASD.

2. Critiquer le module classeur : quels sont les avantages et les inconvénients de définir explicitement le type classeur dans le fichier en-tête. Peut-on faire mieux ?