#include #include "arbre_de_codage/arbre_binaire.c" #define ASCII_EXT 256 arbre huffman(arbre T); void frequence(arbre T, FILE *file); void tri_tab(arbre T,int n); void afficher_tab(arbre T, int n); void init_tab(arbre T, int Elt, int n); // main_compress.c [nom_du_fichier_a_compresser] int main(int argc, char **argv){ FILE *file; const char *filename = argv[1]; const char *mode= "rb"; // Vérification de l'existance du second argument (Nom du fichier à compresser) printf("Argc : %d\n",argc); if(argc != 2){ printf("\nErreur : Veuillez mettre en argument un nom de fichier à compresser (Ex: %s text.txt)\n",argv[0]); return -1; } // Vérification de l'o(uverture du fichier en mode lecture binaire !! FONCTION A MODIFIER else if(!(file=fopen(filename,mode))){ printf("\nErreur : Fichier %s inexistant\n",filename); return -2; } printf("Tableau : \n"); arbre N[ASCII_EXT]; // Initialisation de l'arbre printf("Tableau initialisé -1: \n"); init_tab(N,-1,ASCII_EXT); // On initialise l'arbre avec des poids de -1 printf("Tableau get freq : \n"); frequence(N,file); // On récupère la fréquence d'apparition des lettres du fichiers printf("Tableau tri : \n"); tri_tab(N,ASCII_EXT); // On fait un tri à bulle sur ce tableau printf("Tableau affichage : \n"); afficher_tab(N,ASCII_EXT); arbre huff; printf("Huffman : \n"); //huff = huffman(T); printf("Arbre :\n"); return 0; } void init_tab(arbre T[], int Elt, int n){ int i; for(i=0;ipoids=Elt; } } void frequence(arbre T, FILE *file){ int c; while((c=fgetc(file))!=EOF){ if(T[c].poids!=-1){ T[c].poids++; } else{ T[c].elt=c; T[c].poids=1; } } } void tri_tab(arbre T,int n){ int i,j; noeud tmp; for(i=0;iT[j].poids){ tmp=T[i]; T[i]=T[j]; T[j]=tmp; } } } } int compteur_tab(arbre T, int n){ int i,compteur; compteur=0; for(i=0;ipoids==-1){ i++; } int Index; Index=i; while(Index<255){ arbre tmp=malloc(sizeof(arbre)); tmp->fils_gauche=T[Index]; tmp->fils_droit=T[Index+1]; T[Index+1]=tmp; Index++; tri_tab(T,ASCII_EXT); } return T[Index]; }