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,49 +7,65 @@ int main()
7 //Récupération du fichier contenant le dictionnaire 7 //Récupération du fichier contenant le dictionnaire
8 char fichier[100]; 8 char fichier[100];
9 FILE* fp = NULL; 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 do{ 11 do{
12 - scanf("%s",fichier); 12 + wscanf(L"%s",fichier);
13 fp = fopen(fichier,"r"); 13 fp = fopen(fichier,"r");
14 if(fp == NULL) 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 }while(fp == NULL); 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 //Chargement du dictionnaire 36 //Chargement du dictionnaire
21 dico Dico; 37 dico Dico;
22 init_dico(&Dico); 38 init_dico(&Dico);
23 - load_dico(fp,&Dico); 39 + load_dico(fp,&Dico,separateur);
24 fclose(fp); 40 fclose(fp);
25 - printf("Chargement du dictionnaire effectué!\n\n"); 41 + wprintf(L"Chargement du dictionnaire effectué!\n\n");
26 42
27 //Récupération du fichier contenant les mots à tester 43 //Récupération du fichier contenant les mots à tester
28 char recommencer = ' '; 44 char recommencer = ' ';
29 do{ 45 do{
30 FILE* fp = NULL; 46 FILE* fp = NULL;
31 - printf("Quel fichier voulez-vous tester ?\n"); 47 + wprintf(L"Quel fichier voulez-vous tester ?\n");
32 do{ 48 do{
33 - scanf("%s",fichier); 49 + wscanf(L"%s",fichier);
34 fp = fopen(fichier,"r"); 50 fp = fopen(fichier,"r");
35 if(fp == NULL) 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 }while(fp == NULL); 55 }while(fp == NULL);
40 56
41 //Vérification des mots du fichier 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 fclose(fp); 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 }while(recommencer == 'Y' || recommencer == 'y'); 64 }while(recommencer == 'Y' || recommencer == 'y');
49 65
50 free_dico(Dico);//libérer la mémoire du dictionnaire 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 return 0; 70 return 0;
55 } 71 }
@@ -71,7 +71,7 @@ void toLowerCase(wchar_t mot[]) @@ -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 int first_letter =-1; 76 int first_letter =-1;
77 if(message[0]>='a' && message[0]<='z') 77 if(message[0]>='a' && message[0]<='z')
@@ -95,19 +95,19 @@ void splitcarac(dico *Dico,wchar_t message[]) @@ -95,19 +95,19 @@ void splitcarac(dico *Dico,wchar_t message[])
95 } 95 }
96 96
97 wchar_t *buffer; 97 wchar_t *buffer;
98 - wchar_t *token = wcstok(message, L" ,?;.:/!*+\\\"()=«»", &buffer); 98 + wchar_t *token = wcstok(message, separateur, &buffer);
99 add(Dico->tab_ptr_tree,token,size(token),first_letter); 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 wchar_t val[3000]; 105 wchar_t val[3000];
106 106
107 while(fwscanf(fp, L"%ls",val)==1) 107 while(fwscanf(fp, L"%ls",val)==1)
108 { 108 {
109 toLowerCase(val); 109 toLowerCase(val);
110 - splitcarac(Dico,val); 110 + splitcarac(Dico,val,separateur);
111 } 111 }
112 112
113 //On peut tester la bonne ou mauvaise terminaison de la lecture 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,7 +189,7 @@ int find_mot(dico Dico,wchar_t mot[])
189 else return 0; 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 wchar_t val[3000]; 194 wchar_t val[3000];
195 int cpt_erreur =0; 195 int cpt_erreur =0;
@@ -197,7 +197,7 @@ int find_erreur(dico Dico, FILE *fp) @@ -197,7 +197,7 @@ int find_erreur(dico Dico, FILE *fp)
197 while(fwscanf(fp, L"%ls",val)==1) 197 while(fwscanf(fp, L"%ls",val)==1)
198 { 198 {
199 toLowerCase(val); 199 toLowerCase(val);
200 - cpt_erreur += split_text(Dico,val); 200 + cpt_erreur += split_text(Dico,val,separateur);
201 } 201 }
202 202
203 //On peut tester la bonne ou mauvaise terminaison de la lecture 203 //On peut tester la bonne ou mauvaise terminaison de la lecture
@@ -207,13 +207,13 @@ int find_erreur(dico Dico, FILE *fp) @@ -207,13 +207,13 @@ int find_erreur(dico Dico, FILE *fp)
207 return cpt_erreur; 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 if(message[0] == 0)return 0; 212 if(message[0] == 0)return 0;
213 wchar_t *buffer; 213 wchar_t *buffer;
214 - wchar_t *token = wcstok(message, L" ,?;.:/!*+\\\"()=«»", &buffer); 214 + wchar_t *token = wcstok(message, separateur, &buffer);
215 int err = find_mot(Dico,token); 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 return err; 218 return err;
219 } 219 }
220 \ No newline at end of file 220 \ No newline at end of file
@@ -27,16 +27,16 @@ int size(wchar_t*); @@ -27,16 +27,16 @@ int size(wchar_t*);
27 27
28 void toLowerCase(wchar_t*); 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 void free_tree(struct node *); 34 void free_tree(struct node *);
35 35
36 void free_dico(dico); 36 void free_dico(dico);
37 37
38 -int find_erreur(dico,FILE*); 38 +int find_erreur(dico,FILE*,wchar_t*);
39 39
40 int find_mot(dico,wchar_t*); 40 int find_mot(dico,wchar_t*);
41 41
42 -int split_text(dico,wchar_t*);  
43 \ No newline at end of file 42 \ No newline at end of file
  43 +int split_text(dico,wchar_t*,wchar_t*);
44 \ No newline at end of file 44 \ No newline at end of file