Commit f5b960c956c33f44bd4280c5668dd24b3dfbc72f

Authored by Thorsieger
1 parent 4c14ac67

utilisateur peut choisir la liste des séparateurs

Showing 3 changed files with 43 additions and 27 deletions   Show diff stats
... ... @@ -7,49 +7,65 @@ int main()
7 7 //Récupération du fichier contenant le dictionnaire
8 8 char fichier[100];
9 9 FILE* fp = NULL;
10   - printf("Quel fichier voulez-vous utiliser comme dictionnaire ?\n");
  10 + wprintf(L"Quel fichier voulez-vous utiliser comme dictionnaire ?\n");
11 11 do{
12   - scanf("%s",fichier);
  12 + wscanf(L"%s",fichier);
13 13 fp = fopen(fichier,"r");
14 14 if(fp == NULL)
15 15 {
16   - printf("Le fichier n'est pas accessible !\nEntrez un autre nom de fichier :\n");
  16 + wprintf(L"Le fichier n'est pas accessible !\nEntrez un autre nom de fichier :\n");
17 17 }
18 18 }while(fp == NULL);
19 19  
  20 + //Choix des séparateurs
  21 + wchar_t separateur[] = L",?;.:/!*+\\\"()=«»";
  22 +
  23 + wprintf(L"La liste des séparateurs est : %ls \nVoulez vous la changer ?[Y]\n",separateur);
  24 + char changer_separateur = ' ';
  25 + wscanf(L" %c",&changer_separateur);
  26 + if(changer_separateur == 'Y' || changer_separateur == 'y')
  27 + {
  28 + do{
  29 + wprintf(L"Entrez la nouvelle liste des séparateur :\n");
  30 + wscanf(L"%ls",separateur);
  31 + wprintf(L"La liste des séparateurs : %ls vous convient ?[Y]\n",separateur);
  32 + wscanf(L" %c",&changer_separateur);
  33 + }while(changer_separateur!='Y' && changer_separateur!='y');
  34 + }
  35 +
20 36 //Chargement du dictionnaire
21 37 dico Dico;
22 38 init_dico(&Dico);
23   - load_dico(fp,&Dico);
  39 + load_dico(fp,&Dico,separateur);
24 40 fclose(fp);
25   - printf("Chargement du dictionnaire effectué!\n\n");
  41 + wprintf(L"Chargement du dictionnaire effectué!\n\n");
26 42  
27 43 //Récupération du fichier contenant les mots à tester
28 44 char recommencer = ' ';
29 45 do{
30 46 FILE* fp = NULL;
31   - printf("Quel fichier voulez-vous tester ?\n");
  47 + wprintf(L"Quel fichier voulez-vous tester ?\n");
32 48 do{
33   - scanf("%s",fichier);
  49 + wscanf(L"%s",fichier);
34 50 fp = fopen(fichier,"r");
35 51 if(fp == NULL)
36 52 {
37   - printf("Le fichier n'est pas accessible !\nEntrez un autre nom de fichier :\n");
  53 + wprintf(L"Le fichier n'est pas accessible !\nEntrez un autre nom de fichier :\n");
38 54 }
39 55 }while(fp == NULL);
40 56  
41 57 //Vérification des mots du fichier
42   - int result = find_erreur(Dico,fp);
43   - printf("Le fichier testé contient %d mots qui ne sont pas présent dans le dictionnaire.\n",result);
  58 + int result = find_erreur(Dico,fp,separateur);
  59 + wprintf(L"Le fichier testé contient %d mots qui ne sont pas présent dans le dictionnaire.\n",result);
44 60 fclose(fp);
45 61  
46   - printf("Voulez vous tester un autre fichier ?[Y]\n");
47   - scanf(" %c",&recommencer);
  62 + wprintf(L"Voulez vous tester un autre fichier ?[Y]\n");
  63 + wscanf(L" %c",&recommencer);
48 64 }while(recommencer == 'Y' || recommencer == 'y');
49 65  
50 66 free_dico(Dico);//libérer la mémoire du dictionnaire
51 67  
52   - printf("Fin du programme\n");
  68 + wprintf(L"Fin du programme\n");
53 69  
54 70 return 0;
55 71 }
... ...
... ... @@ -71,7 +71,7 @@ void toLowerCase(wchar_t mot[])
71 71 }
72 72 }
73 73  
74   -void splitcarac(dico *Dico,wchar_t message[])
  74 +void splitcarac(dico *Dico,wchar_t message[],wchar_t separateur[])
75 75 {
76 76 int first_letter =-1;
77 77 if(message[0]>='a' && message[0]<='z')
... ... @@ -95,19 +95,19 @@ void splitcarac(dico *Dico,wchar_t message[])
95 95 }
96 96  
97 97 wchar_t *buffer;
98   - wchar_t *token = wcstok(message, L" ,?;.:/!*+\\\"()=«»", &buffer);
  98 + wchar_t *token = wcstok(message, separateur, &buffer);
99 99 add(Dico->tab_ptr_tree,token,size(token),first_letter);
100   - if(buffer!=NULL)splitcarac(Dico,buffer);
  100 + if(buffer!=NULL)splitcarac(Dico,buffer,separateur);
101 101 }
102 102  
103   -void load_dico(FILE *fp, dico *Dico)
  103 +void load_dico(FILE *fp, dico *Dico, wchar_t separateur[])
104 104 {
105 105 wchar_t val[3000];
106 106  
107 107 while(fwscanf(fp, L"%ls",val)==1)
108 108 {
109 109 toLowerCase(val);
110   - splitcarac(Dico,val);
  110 + splitcarac(Dico,val,separateur);
111 111 }
112 112  
113 113 //On peut tester la bonne ou mauvaise terminaison de la lecture
... ... @@ -189,7 +189,7 @@ int find_mot(dico Dico,wchar_t mot[])
189 189 else return 0;
190 190 }
191 191  
192   -int find_erreur(dico Dico, FILE *fp)
  192 +int find_erreur(dico Dico, FILE *fp,wchar_t separateur[])
193 193 {
194 194 wchar_t val[3000];
195 195 int cpt_erreur =0;
... ... @@ -197,7 +197,7 @@ int find_erreur(dico Dico, FILE *fp)
197 197 while(fwscanf(fp, L"%ls",val)==1)
198 198 {
199 199 toLowerCase(val);
200   - cpt_erreur += split_text(Dico,val);
  200 + cpt_erreur += split_text(Dico,val,separateur);
201 201 }
202 202  
203 203 //On peut tester la bonne ou mauvaise terminaison de la lecture
... ... @@ -207,13 +207,13 @@ int find_erreur(dico Dico, FILE *fp)
207 207 return cpt_erreur;
208 208 }
209 209  
210   -int split_text(dico Dico,wchar_t message[])
  210 +int split_text(dico Dico,wchar_t message[], wchar_t separateur[])
211 211 {
212 212 if(message[0] == 0)return 0;
213 213 wchar_t *buffer;
214   - wchar_t *token = wcstok(message, L" ,?;.:/!*+\\\"()=«»", &buffer);
  214 + wchar_t *token = wcstok(message, separateur, &buffer);
215 215 int err = find_mot(Dico,token);
216   - if(buffer!=NULL)err += split_text(Dico,buffer);
  216 + if(buffer!=NULL)err += split_text(Dico,buffer,separateur);
217 217  
218 218 return err;
219 219 }
220 220 \ No newline at end of file
... ...
... ... @@ -27,16 +27,16 @@ int size(wchar_t*);
27 27  
28 28 void toLowerCase(wchar_t*);
29 29  
30   -void splitcarac(dico*,wchar_t*);
  30 +void splitcarac(dico*,wchar_t*,wchar_t*);
31 31  
32   -void load_dico(FILE *, dico*);
  32 +void load_dico(FILE *, dico*,wchar_t*);
33 33  
34 34 void free_tree(struct node *);
35 35  
36 36 void free_dico(dico);
37 37  
38   -int find_erreur(dico,FILE*);
  38 +int find_erreur(dico,FILE*,wchar_t*);
39 39  
40 40 int find_mot(dico,wchar_t*);
41 41  
42   -int split_text(dico,wchar_t*);
43 42 \ No newline at end of file
  43 +int split_text(dico,wchar_t*,wchar_t*);
44 44 \ No newline at end of file
... ...