void afficher_dictionnaire(Dictionnaire *dico, char* str)
{
 int i,longueur, valeur_dico;
 Dictionnaire* pointeur_dico;
 char car;
 char* str_fille;

 for (i=0; i<MAX; i++)
 {
	car = obtenirElementDico(*dico,i);
 	valeur_dico = dico->AdRFils[i].finDeMot;
	pointeur_dico =  dico->AdRFils[i].pointeur; 
 	
 	if (valeur_dico == 1)
 	{
 		printf("%s%c\n",str,car);
 	}
 	
 	if (pointeur_dico != NULL)
 	{
 		longueur = strlen(str);
 		str_fille = (char*)calloc(longueur+2,sizeof(char));
		strcat(str_fille,str);
 		str_fille[longueur] = car;
 		str_fille[longueur+1] = '\0';
		afficher_dictionnaire(pointeur_dico,str_fille);
 		free(str_fille); 
 	}
 }

}
Exemple #2
0
int main (int argc, char * argv[]) {
    t_ptr_arbre dictionnaire = NULL;
    unsigned int choix = 1;
    char fichier_entree[256], fichier_sortie[256];
    double temps_debut = 0.0, temps_fin = 0.0;
    
    printf ("\n\n");
    printf (" ---------- Compression et Decompression LZW ---------------\n\n");
    
    if (argc == 2 && strcmp ("h", argv[1]) == 0) {
        printf ("\n\n");
        printf (" lzw <c|d|h> <fichier_d_entree> <fichier_de_sortie>\n");
        printf (" \tc : compression\n");
        printf (" \td : decompression\n");
        printf (" \th : affichage de l'aide\n");
        printf (" \tfichier_d_entree : nom du fichier d'entree\n");
        printf (" \tfichier_de_sortie : nom du fichier de sortie\n");
        printf ("\n\n");
        return EXIT_SUCCESS;
    }
    else if (argc == 4) {
        if (strcmp ("c", argv[1]) == 0) {
            printf ("COMPRESSION\n");
            temps_debut = (double)clock ();
            
            dictionnaire = initialiser_dictionnaire ();
            ouvrir_fichier_entree (argv[2], 0);
            ouvrir_fichier_sortie (argv[3], 1);
            compresser (dictionnaire);
            
            temps_fin = (double)clock ();
            afficher_statistiques (1, temps_debut, temps_fin);
            fermer_fichiers ();
            detruire_dictionnaire (dictionnaire);
        }
        else if (strcmp ("d", argv[1]) == 0) {
            printf ("DECOMPRESSION\n");
            temps_debut = (double)clock ();
            dictionnaire = initialiser_dictionnaire ();
            ouvrir_fichier_entree (argv[2], 1);
            ouvrir_fichier_sortie (argv[3], 0);
            decompresser (dictionnaire);
            temps_fin = (double)clock ();
            afficher_statistiques (0, temps_debut, temps_fin);
            fermer_fichiers ();
            detruire_dictionnaire (dictionnaire);
        }
        
        printf ("\n\n");
        return EXIT_SUCCESS;
    }
    
    /* Menu si aucun argument n'a ete donne en ligne de commande */
    while (choix != 0) {
        printf ("\n\n");
        printf (" \t1 - Compresser un fichier (fichier texte)\n");
        printf (" \t2 - Decompresser un fichier (fichier binaire)\n");
        printf (" \t3 - Affichage du dernier dictionnaire utilise\n");
        printf (" \t0 - Quitter le programme\n");
        printf (" Votre choix : ");
        scanf ("%d", &choix);
        fgets (fichier_entree, 256, stdin); /* Recupere le caractere \n lu apres le choix */
        printf ("\n");
        
        switch (choix) {
            case 1 :
                printf ("COMPRESSION\n");
                if (dictionnaire != NULL)
                    detruire_dictionnaire (dictionnaire);
                
                temps_debut = (double)clock ();
                
                dictionnaire = initialiser_dictionnaire ();
                demander_nom_fichiers (fichier_entree, fichier_sortie);
                ouvrir_fichier_entree (fichier_entree, 0);
                ouvrir_fichier_sortie (fichier_sortie, 1);
                compresser (dictionnaire);
                
                temps_fin = (double)clock ();
                afficher_statistiques (1, temps_debut, temps_fin);
                fermer_fichiers ();
                break;
            case 2 :
                printf ("DECOMPRESSION\n");
                if (dictionnaire != NULL)
                    detruire_dictionnaire (dictionnaire);
                
                temps_debut = (double)clock ();
                
                dictionnaire = initialiser_dictionnaire ();
                demander_nom_fichiers (fichier_entree, fichier_sortie);
                ouvrir_fichier_entree (fichier_entree, 1);
                ouvrir_fichier_sortie (fichier_sortie, 0);
                decompresser (dictionnaire);
                
                temps_fin = (double)clock ();
                afficher_statistiques (0, temps_debut, temps_fin);
                fermer_fichiers ();
                break;
            case 3 :
                printf ("AFFICHAGE DU DICTIONNAIRE\n");
                if (dictionnaire != NULL)
                    afficher_dictionnaire (dictionnaire, 0);
                break;
            default : choix = 0; break;
        }
    }
    
    printf ("\n");
    
    return EXIT_SUCCESS;
}