Bonjour à tous (toutes)!
Dans le cadre d'un projet universitaire, je dois construire un lexique à partir d'un fichier texte.
Il faut que je lise le fichier, que je créé un arbre lexicographique à l'aide du fichier.

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
#include <stdio.h>
#include <stdlib.h>
 
typedef struct noeud{
  unsigned char lettre;
  struct noeud *filsg, *frered;
}Noeud, *Arbre;
 
Arbre AlloueNoeud(char let){
  Arbre tmp;
  tmp = (Noeud*)malloc(sizeof(Noeud));
  if (tmp == NULL)
    return NULL;
  tmp->lettre = let;
  tmp->filsg = NULL;
  tmp->frered = NULL;
  return tmp;
}
 
int FileLen(char* file){
  FILE* fichier = NULL;
  int i=0;
  fichier = fopen(file, "r");
  if (fichier != NULL){
    while(fgetc(fichier) != EOF)
      i++;
  }
  fclose(fichier);
  return i;
}
 
/*La fonction suivante lit un fichier, et inscrit chaque caractère du fichier dans un tableau. Ce tableau sera utilisé pour la création de l'arbre.*/
 
char* ReadFile(char tab[], char* file){
  FILE* fichier = NULL;
  int indice=0;
  fichier = fopen(file,"r");
  if (fichier != NULL){
    while((tab[indice] = fgetc(fichier))!=EOF)
      indice++;
  }
  fclose(fichier);
  return tab;
}
 
void Build(char caractere[], Arbre*a, int i){
  if(caractere[i] == EOF)
    exit(0);
  if(('A'<=caractere[i]<='Z')||('a'<=caractere[i]<='z')){
    if(a== NULL){
      Arbre New = AlloueNoeud(caractere[i]);
      *a = New;
      Build(caractere, &((*a)->filsg), i+1);
    }
 
    if(caractere[i] == (*a)->lettre)
      Build(caractere, &((*a)->filsg), i+1);
 
    else if(caractere[i]<(*a)->lettre){
      Arbre New = AlloueNoeud(caractere[i]);
      New->frered = (*a)->frered;
      (*a) = New;
      Build(caractere, &((*a)->filsg), i+1);
    }
 
    else if(caractere[i]>(*a)->lettre){
      Build(caractere, &((*a)->frered), i);
    }
  }
  else if(caractere[i] =='\0'){
    Arbre New = AlloueNoeud(caractere[i]);
    (*a)->filsg = New;
  }
  else
    Build(caractere, a, i+1);
}
J'ai une erreur de segmentation sur la fonction build. Quelqu'un peut-il m'aider?
Merci d'avance!!!