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,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 |