int main(int argc, char **argv) { /* Déclaration du clock */ clock_t debut; clock_t fin; char *Fichier_texte = (char *)malloc(40 * sizeof(char)); unsigned char * mon_text = (unsigned char *)malloc(5000000 * sizeof(unsigned char)); char *Fichier_mots = (char *)malloc(40 * sizeof(char)); unsigned char **mes_mots = (unsigned char **)malloc(100 * sizeof(unsigned char *)); int j, c; long int i; /* Utilisation des paramétres lors de l'exécution */ if (argc == 3){ if(strcpy(Fichier_texte, argv[1])==NULL) {printf("Impossible de trouver le fichier contenant le texte\n");} if(strcpy(Fichier_mots, argv[2])==NULL){printf("Impossible de trouver le fichier contenant les mots\n");} } else{ /* L'utilisateur ne donne pas de paramétres */ printf("Veuillez donner le nom du fichier qui contient le texte :\n"); if (scanf("%s", Fichier_texte) == 0) {printf("Impossible de trouver le fichier contenant le texte\n"); return -1;} printf("Entrez le nom du fichier contenant les mots a rechercher :\n"); if (scanf("%s", Fichier_mots) == 0) {printf("Impossible de trouver le fichier contenant les mots\n"); return -1;} } /* Ouverture des fichiers Fichier_texte et Fichier_mots en mode lecture */ FILE * texte_fichier = fopen(Fichier_texte, "r"); FILE * mots_fichier = fopen(Fichier_mots, "r"); /* Récuperer le texte dans une variable */ for (i = 0; i < 5000000; i++) { mon_text[i] = fgetc(texte_fichier); } /* Récupération de la liste des mots */ for (i = 0; i < 100; i++) { mes_mots[i] = (unsigned char *)malloc(60 * sizeof(unsigned char)); j = 0; c = fgetc(mots_fichier); while (c != '\n') { mes_mots[i][j] = c; c = fgetc(mots_fichier); j = j+1;}} /* Debut de calcule du temps d'exécution */ debut = clock(); ahoCorasick(mes_mots, 100, mon_text, 5000000); fin = clock(); /* Fin de calcule du temps d'exécution */ printf("**************************************************\n"); printf("Vous avez exécuté l'algorithme de recherche Aho-Corasick.\n"); printf("**************************************************\n"); printf("La structure utilisée pour representer le trie : 'Structure mixte'.\n"); printf("**************************************************\n"); printf("Le fichier qui contient le texte est : %s.\n",Fichier_texte ); printf("**************************************************\n"); printf("Le fichier qui contient l'ensemble des mots est : %s.\n",Fichier_mots ); printf("******************* Temps ****************\n"); printf("Le temp d'exécution de cette recherche est : %f seconde(s)...\n", (double) (fin - debut) / CLOCKS_PER_SEC); printf("**************************************************\n"); /* Fermer les fichiers */ fclose(mots_fichier); fclose(texte_fichier); return 0; }
void setTrie (int n) { trie.__init (); for (int i = 0; i < n; ++i) trie.insert (pat [i]); trie.computeFailure (); ahoCorasick (); }