Commit f5b960c956c33f44bd4280c5668dd24b3dfbc72f
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 | ... | ... |