Accueil > > > COMPRESSION / DECOMPRESSION SELON L'ALGORITHME LEMPELZIV 78V
COMPRESSION / DECOMPRESSION SELON L'ALGORITHME LEMPELZIV 78V
Information sur la source
Description
Salut à vous tous; Ce programme entièrement écrit en C, permet la compression et la décompression selon l'algorithme LempelZiv78. Cet algorithme génère son propre dictionnaire au fur et à mesure qu'on avance dans la lecture du fichier source (pour la compression et la décompression). Le projet contient en tout 7 fichiers, dont: - Un fichier principal 'main.c', contient la fonction main() - Deux fichiers 'ListeChaine.c' et 'ListeChaine.h', contiennent des fonctions permettant la définition et l'utilisation d'une liste chainée - Deux fichiers 'LempelZiv.c' et 'LempelZiv.h', définit la fonction de compression et celle de la décompression selon l'algorithme de LempelZiv-v78 - Deux fichiers 'ChaineBit.c' et 'ChaineBit.h', définissent les fonctions pour le traitement, l'écriture et la lecture à partir d'un fichier au niveau des bits La fonction de compression marche à merveille (son résultat est correcte); La fonction de décompression marche pour des fichiers de faible taille, mais dés que les fichiers deviennent de grande taille, la fonction donne des résultat incorrect.
Source
- Voici la fonction de décompression, elle fait appelle à d'autres fonctions du projet:
-
- void decompression(char *Src, char *Dest){
- FILE *fichSrc=fopen(Src,"r");
- FILE *fichDest=fopen(Dest,"w");
- liste *tete=NULL,*p;
- int i=0,nbre,ind;
- long tailleFich,pf;
- char car,inter1[200],inter2[200];
-
- fseek(fichSrc,0,SEEK_END);
- tailleFich=ftell(fichSrc);
- fseek(fichSrc,0,SEEK_SET);
-
- while((pf=ftell(fichSrc)) < tailleFich){
- i++;
- strcpy(inter1,"");
- strcpy(inter2,"");
- nbre=ceil(log(i)/log(2)); // l'indice de la chaine est code sur nbre bits
-
- lectBitFich(fichSrc,nbre,&ind,&car);
-
- inter1[0]=car;
- inter1[1]='\0';
-
- if(ind!=0){
- p=getListe(tete,ind-1); //p pointe sur l'element d'indice j
- strcpy(inter2,p->chaine);
- strcat(inter2,inter1);
- strcpy(inter1,inter2);
- }
-
- tete=ajoutListe(tete,ind,inter1);
- fprintf(fichDest,"%s",inter1);
- }
-
- printf("\n___________________________AFFICHAGE LISTE DECOMPRESSION_______________________\n");
- afficheListe(tete);
- printf("\nFichier de taille %ld\n",tailleFich);
- printf("\nListe de Decompression de taille %d\n",tailleListe(tete));
-
- tete=supprimeListe(tete);
-
- fclose(fichSrc);
- fclose(fichDest);
- }
Voici la fonction de décompression, elle fait appelle à d'autres fonctions du projet:
void decompression(char *Src, char *Dest){
FILE *fichSrc=fopen(Src,"r");
FILE *fichDest=fopen(Dest,"w");
liste *tete=NULL,*p;
int i=0,nbre,ind;
long tailleFich,pf;
char car,inter1[200],inter2[200];
fseek(fichSrc,0,SEEK_END);
tailleFich=ftell(fichSrc);
fseek(fichSrc,0,SEEK_SET);
while((pf=ftell(fichSrc)) < tailleFich){
i++;
strcpy(inter1,"");
strcpy(inter2,"");
nbre=ceil(log(i)/log(2)); // l'indice de la chaine est code sur nbre bits
lectBitFich(fichSrc,nbre,&ind,&car);
inter1[0]=car;
inter1[1]='\0';
if(ind!=0){
p=getListe(tete,ind-1); //p pointe sur l'element d'indice j
strcpy(inter2,p->chaine);
strcat(inter2,inter1);
strcpy(inter1,inter2);
}
tete=ajoutListe(tete,ind,inter1);
fprintf(fichDest,"%s",inter1);
}
printf("\n___________________________AFFICHAGE LISTE DECOMPRESSION_______________________\n");
afficheListe(tete);
printf("\nFichier de taille %ld\n",tailleFich);
printf("\nListe de Decompression de taille %d\n",tailleListe(tete));
tete=supprimeListe(tete);
fclose(fichSrc);
fclose(fichDest);
}
Conclusion
Moi, je pense que la fonction bugs lors de l'appel de la fonction "lectBitFich(fichSrc,nbre,&ind,&car)",
Si vous avez une façon meilleure pour la lecture bit à bit à partir du fichier, et si vous avez des suggestions n'hésitez pas !!!
Merci d'avance !!!
Historique
- 02 mai 2010 00:36:04 :
- Juste un petit changement de titre...
- 05 mai 2010 19:57:04 :
- Je suis vraiment désolé !!!!!
Le zip n'était pas le bon, désolé ^^
- 06 mai 2010 00:04:33 :
- ....
Sources de la même categorie
DÉCOMPRESSER EN .NET PLUSIEURS FORMATS POPULAIRES D'ARCHIVAG...DÉCOMPRESSER EN .NET PLUSIEURS FORMATS POPULAIRES D'ARCHIVAGE (RAR, ZIP, CAB, 7Z, GZIP, TAR, ETC...) Ce code permet de décompresser beaucoup des formats d'archivage RAR, ZIP, CAB, GZIP, BZIP2, TAR, 7z et la liste n'est pas complète.
Ce code est des...
par NikatorS
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
Algorithme de compression [ par nebneb37 ]
Dans le cadre d'un dossier sur la compression, je suis a la recherche des noms des algorithmes de base des formats ZIP, RAR, ACE ... est qu'il s'agit
Algorithme de compression STAR amélioré [ par hi_vivie2 ]
Bonjour à tous,Je dois réaliser de manière urgente l'implémentation en java de l'algorithme de compression STAR amélioré appliqué aux images en mouvem
Algorithme de compression STAR amélioré [ par hi_vivie2 ]
Bonjour à tous,Je dois réaliser de manière urgente l'implémentation en java de l'algorithme de compression STAR amélioré appliqué aux images en mouvem
algorithme de huffman( compression) [ par flamme19 ]
sa[size=200]lut, je cherche un programme en c++ qui fait la compression, puis la décompression d'un texte donné en utilisant l'algorithme de huffman..
Compression de fichier bianire [ par VinceExtense ]
Je connais quelques algorithme de compression sans perte comme le codage huffman, le RLE ou avec dictionnaire.Mais il y a t'il d'autres types d'algori
Compression avec huffman sous SCILAB si possible Decompression aussi [ par Doser ]
Besoin d'aide j suis un peu coincé
compression et décompression un fichier texte selon l'algorithme de HUFFMAN [ par sarasofia ]
[b]salut tout le monde s'il vous plaît[^^sad1] j ai besoin d'un programme de compression texte selon l algorithme de Huffman en C,C++, Matlab s'il vou
algorithme de compression de fichier avec zlib [ par mayssakh84 ]
bonjour, j'ai un programme qui utilise les méthodes deflate() et inflate() de la librairie zlib pour la compression des fichiers mon probleme c'est q
compression et decompression d'un fichier [ par asma ]
salut tt le monde , vous pouvez me filer un coup de main les gars ?? je veux une astuce pour compresser et decompresser un fichier (EN C++ evidemment
compression et c++ [ par fakbill ]
A l'adresse http://www.cjkware.com/wamckee/huffman.zip j'ai touvé une implémentation en c++ de l'algo de huffman.Pb: Je ne cromprends rien à la façon
|
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Forum
MATRICE TEMPLATEMATRICE TEMPLATE par hjr2610
Cliquez pour lire la suite par hjr2610 RE : SAC A DOS RE : SAC A DOS par hadjkaddour
Cliquez pour lire la suite par hadjkaddour
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|