FILE *fichier = stdin;
fichier est l'entrée standard (le clavier).
La fonction strtok déclarée dans string.h permet de découper une chaîne de caractères en "morceaux" en se basant sur des séparateurs. Avant de commencer, il est conseillé de consulter, et éventuellement d'essayer, le petit programme d'essai ci-joint qui lit une ligne envoyée au clavier et la découpe avec la fonction strtok.
La fonction strcmp prototypée dans string.h compare des chaînes de caractères selon l'ordre lexicographique.
La fonction strlen prototypée dans string.h permet de connaître la longueur d'une chaîne de caractères.
Spécifications
On utilise la déclaration suivante :
typedef struct compteMot
{
char * mot;
int nbOcc;
}CompteMot;
pour coder :
- un mot du texte
- le nombre d'occurrences de ce mot dans le texte.
On utilise un tableau dynamique pour mettre et ranger les "CompteMot(s)". On choisit au départ une certaine taille (50 par exemple). On prévoit le cas où le tableau de structures CompteMot est plein alors qu'il y a encore des mots à ajouter ; dans ce cas, on utilise la fonction realloc prototypée dans stdlib.h pour agrandir le tableau.
On lit le texte ligne par ligne avec la fonction fgets. Pour stocker une à une ces lignes, on utilise un même tableau statique d'une longueur bien surévaluée (200 par exemple).
Exemple d'exécution
Supposons que le programme ait été lancé avec un seul argument indiquant le nom d'un fichier contenant le texte suivant :
Bonjour, comment vas-tu ?
Très bien. Et toi, comment vas-tu ?
alors, on pourrait avoir à l'exécution :
Bonjour : 1 fois
Et : 1 fois
Très : 1 fois
bien : 1 fois
comment : 2 fois
toi : 1 fois
tu : 2 fois
vas : 2 fois
Corrigé
Voir le corrigé.
Irène Charon
Last modified: Mon Sep 13 19:08:51 MET DST 1999