1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97
|
#include<ctype.h>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define MAX_MOTS 100 /* Contenu maxi du dico. */
#define LONG_MOT 30 /* Nombre de caractères maxi par mot. */
#if 0
#define F_DICO "dico.dat"
#else
#define F_DICO "\\dev\\dico\\dico_fr_maj.txt"
#endif
/*
Fonction d'affichage de "dico".
*/
void afficher (char dico[][LONG_MOT], int n)
{
int i;
for (i = 0; i < n; i++)
{
printf ("%s", dico[i]);
}
}
/*
Fonction de comparaison pour "qsort()".
*/
int comparerMots (void const *a, void const *b)
{
char const *pa = a;
char const *pb = b;
return strcmp (pa, pb);
}
int main (int argc, char *argv[])
{
int ret = EXIT_SUCCESS;
if (argc > 1) /* Vérif. du nombre d'arguments. */
{
FILE *fiTexte = fopen (argv[1], "r"); /* Vérif. d'accès au fichier. */
if (fiTexte != NULL)
{
FILE *fiDico = fopen (F_DICO, "r");
if (fiDico != NULL)
{
char ligne[LONG_MOT] = ""; /* Stockage des lignes des fichiers. */
char dico[MAX_MOTS][LONG_MOT] = { "" }; /* Tableau des mots du fichier dico. */
int nbMots = 0; /* Valeur pour le nombre de mots. */
/* Lecture du fichier et stokage dans le tableau "dico". */
while (nbMots < MAX_MOTS
&& fgets (ligne, LONG_MOT, fiDico) != NULL)
{
strcpy (dico[nbMots], ligne);
nbMots++;
}
fclose (fiDico), fiDico=NULL;
printf ("nbMots = %d\n", nbMots);
afficher (dico, nbMots);
#if 1
/* Tri de "dico". */
qsort (dico, nbMots, LONG_MOT, comparerMots);
#endif
}
else
{
perror (F_DICO);
ret = EXIT_FAILURE;
}
}
else
{
perror (argv[1]);
ret = EXIT_FAILURE;
}
fprintf (stdout, "Appuyez sur une touche...");
fclose (fiTexte);
}
else
{
fprintf (stderr, "Erreur de nombre d'arguments ! Usage de :\n");
printf ("%s texte.txt\n", argv[0]);
ret = EXIT_FAILURE;
}
return ret;
} |
Partager