diff --git a/main.c b/main.c index 65f2040..410c569 100644 --- a/main.c +++ b/main.c @@ -7,49 +7,65 @@ int main() //Récupération du fichier contenant le dictionnaire char fichier[100]; FILE* fp = NULL; - printf("Quel fichier voulez-vous utiliser comme dictionnaire ?\n"); + wprintf(L"Quel fichier voulez-vous utiliser comme dictionnaire ?\n"); do{ - scanf("%s",fichier); + wscanf(L"%s",fichier); fp = fopen(fichier,"r"); if(fp == NULL) { - printf("Le fichier n'est pas accessible !\nEntrez un autre nom de fichier :\n"); + wprintf(L"Le fichier n'est pas accessible !\nEntrez un autre nom de fichier :\n"); } }while(fp == NULL); + //Choix des séparateurs + wchar_t separateur[] = L",?;.:/!*+\\\"()=«»"; + + wprintf(L"La liste des séparateurs est : %ls \nVoulez vous la changer ?[Y]\n",separateur); + char changer_separateur = ' '; + wscanf(L" %c",&changer_separateur); + if(changer_separateur == 'Y' || changer_separateur == 'y') + { + do{ + wprintf(L"Entrez la nouvelle liste des séparateur :\n"); + wscanf(L"%ls",separateur); + wprintf(L"La liste des séparateurs : %ls vous convient ?[Y]\n",separateur); + wscanf(L" %c",&changer_separateur); + }while(changer_separateur!='Y' && changer_separateur!='y'); + } + //Chargement du dictionnaire dico Dico; init_dico(&Dico); - load_dico(fp,&Dico); + load_dico(fp,&Dico,separateur); fclose(fp); - printf("Chargement du dictionnaire effectué!\n\n"); + wprintf(L"Chargement du dictionnaire effectué!\n\n"); //Récupération du fichier contenant les mots à tester char recommencer = ' '; do{ FILE* fp = NULL; - printf("Quel fichier voulez-vous tester ?\n"); + wprintf(L"Quel fichier voulez-vous tester ?\n"); do{ - scanf("%s",fichier); + wscanf(L"%s",fichier); fp = fopen(fichier,"r"); if(fp == NULL) { - printf("Le fichier n'est pas accessible !\nEntrez un autre nom de fichier :\n"); + wprintf(L"Le fichier n'est pas accessible !\nEntrez un autre nom de fichier :\n"); } }while(fp == NULL); //Vérification des mots du fichier - int result = find_erreur(Dico,fp); - printf("Le fichier testé contient %d mots qui ne sont pas présent dans le dictionnaire.\n",result); + int result = find_erreur(Dico,fp,separateur); + wprintf(L"Le fichier testé contient %d mots qui ne sont pas présent dans le dictionnaire.\n",result); fclose(fp); - printf("Voulez vous tester un autre fichier ?[Y]\n"); - scanf(" %c",&recommencer); + wprintf(L"Voulez vous tester un autre fichier ?[Y]\n"); + wscanf(L" %c",&recommencer); }while(recommencer == 'Y' || recommencer == 'y'); free_dico(Dico);//libérer la mémoire du dictionnaire - printf("Fin du programme\n"); + wprintf(L"Fin du programme\n"); return 0; } diff --git a/tree.c b/tree.c index 24f0660..a65cefe 100644 --- a/tree.c +++ b/tree.c @@ -71,7 +71,7 @@ void toLowerCase(wchar_t mot[]) } } -void splitcarac(dico *Dico,wchar_t message[]) +void splitcarac(dico *Dico,wchar_t message[],wchar_t separateur[]) { int first_letter =-1; if(message[0]>='a' && message[0]<='z') @@ -95,19 +95,19 @@ void splitcarac(dico *Dico,wchar_t message[]) } wchar_t *buffer; - wchar_t *token = wcstok(message, L" ,?;.:/!*+\\\"()=«»", &buffer); + wchar_t *token = wcstok(message, separateur, &buffer); add(Dico->tab_ptr_tree,token,size(token),first_letter); - if(buffer!=NULL)splitcarac(Dico,buffer); + if(buffer!=NULL)splitcarac(Dico,buffer,separateur); } -void load_dico(FILE *fp, dico *Dico) +void load_dico(FILE *fp, dico *Dico, wchar_t separateur[]) { wchar_t val[3000]; while(fwscanf(fp, L"%ls",val)==1) { toLowerCase(val); - splitcarac(Dico,val); + splitcarac(Dico,val,separateur); } //On peut tester la bonne ou mauvaise terminaison de la lecture @@ -189,7 +189,7 @@ int find_mot(dico Dico,wchar_t mot[]) else return 0; } -int find_erreur(dico Dico, FILE *fp) +int find_erreur(dico Dico, FILE *fp,wchar_t separateur[]) { wchar_t val[3000]; int cpt_erreur =0; @@ -197,7 +197,7 @@ int find_erreur(dico Dico, FILE *fp) while(fwscanf(fp, L"%ls",val)==1) { toLowerCase(val); - cpt_erreur += split_text(Dico,val); + cpt_erreur += split_text(Dico,val,separateur); } //On peut tester la bonne ou mauvaise terminaison de la lecture @@ -207,13 +207,13 @@ int find_erreur(dico Dico, FILE *fp) return cpt_erreur; } -int split_text(dico Dico,wchar_t message[]) +int split_text(dico Dico,wchar_t message[], wchar_t separateur[]) { if(message[0] == 0)return 0; wchar_t *buffer; - wchar_t *token = wcstok(message, L" ,?;.:/!*+\\\"()=«»", &buffer); + wchar_t *token = wcstok(message, separateur, &buffer); int err = find_mot(Dico,token); - if(buffer!=NULL)err += split_text(Dico,buffer); + if(buffer!=NULL)err += split_text(Dico,buffer,separateur); return err; } \ No newline at end of file diff --git a/tree.h b/tree.h index ad23b77..71b4dd8 100644 --- a/tree.h +++ b/tree.h @@ -27,16 +27,16 @@ int size(wchar_t*); void toLowerCase(wchar_t*); -void splitcarac(dico*,wchar_t*); +void splitcarac(dico*,wchar_t*,wchar_t*); -void load_dico(FILE *, dico*); +void load_dico(FILE *, dico*,wchar_t*); void free_tree(struct node *); void free_dico(dico); -int find_erreur(dico,FILE*); +int find_erreur(dico,FILE*,wchar_t*); int find_mot(dico,wchar_t*); -int split_text(dico,wchar_t*); \ No newline at end of file +int split_text(dico,wchar_t*,wchar_t*); \ No newline at end of file -- libgit2 0.21.2