Bonjour à toutes et à tous,

Je travaille la recherche de mots (contenu dans un fichier texte) depuis un dictionnaire (également sur fichier texte). J(utilise la recherche dichotomique et le tri au moyen de qsort().
Le source compile (Dev++) sans erreurs ni avertissements mais le programme plante lors de la lecture de la fonction. Voici mon code :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
#include<ctype.h>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
 
#define MAX_MOTS 100           /*  Contenu maxi du dico.  */
#define LONG_MOT 20            /*  Nombre de caractères maxi par mot.  */ 
 
/*
    Fonction d'affichage de "dico".
*/
 
void afficher (char dico[])
{
    int i;
    int n = strlen(dico);    
 
    for (i = 0; i < n ; i++)
    {
        printf ("%c", dico[i]);
    }
}  
 
/*
    Fonction de comparaison pour "qsort()".
*/ 
 
int comparerMots (void const *a, void const *b)  
{
    char const *const *pa = a;
    char const *const *pb = b;   
 
    return strcmp (*pa, *pb);
}
 
int main (int argc, char *argv[])
{
    FILE *fiDico ;                                /*  Pointeurs sur fichiers texte.  */
    FILE *fiTexte ;                               
 
    int = 0 ;                                   /*  Indice courant.  */
    char ligne[LONG_MOT] = "" ;        /*  Stockage des lignes des fichiers.  */
    char dico[MAX_MOTS] = "";          /* Tableau des mots du fichier dico.  */
    char mot_texte[LONG_MOT] = "" ;    /*  Mot à rechercher.  */
    char *posMot = NULL;               /*  Pointeur pour la recherche.  */
    int nbMots = 0;                    /*  Valeur pour le nombre de mots.  */ 
 
 
    if ( argc != 2 )                        /*  Vérif. du nombre d'arguments.  */
    {
        fprintf (stderr, "Erreur de nombre d'arguments ! Usage de :\n");
        printf ("%s texte.txt\n", argv[0]);     
        exit (EXIT_FAILURE);
    }
 
    fiTexte = fopen(argv[1],"r");        /*  Vérif. d'accès au fichier.  */
    if (fiTexte == NULL)
    {
        printf ("Impossible d'ouvrir %s !\n", argv[1]);
        exit (EXIT_FAILURE);
    }
    else
    {
        fiDico = fopen("dico.dat", "r");
 
        /*  Lecture du fichier et stokage dans le tableau "dico".  */ 
        while (fgets (ligne, MAX_MOTS, fiDico) != NULL )
        {      
            nbMots++;
            strcat (dico, ligne);
        }
 
        afficher(dico);
 
        /*  Tri de "dico".  */
 
        qsort (dico, nbMots, LONG_MOT, comparerMots);	
 
        fclose(fiTexte);
        fclose(fiDico);       
    }   
    fprintf (stdout, "Appuyez sur une touche...");
    getch();
    return 0;
}
Je ne trouve pas l'erreur pouvant provoquer ce plantage. Pourriez-vous m'éclairer ? Merci d'avance.