begin process at 2012 05 28 19:38:57
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

debutant en c, probleme pour un programmme de compression


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

debutant en c, probleme pour un programmme de compression

vendredi 28 novembre 2003 à 13:26:02 | debutant en c, probleme pour un programmme de compression

araborgne

voila donc je cherchais un programme permettant de compresser et decompresser un fichier texte, et image.
j'en ai trouver un, mais il est ecrit en c++, et je ne sait pas du tout le convertir en c tout court.
le voici donc, si quelqu'un pouvait m'aider ce serait simpa! :)
(un moyen de le traduire, ou un autre programme qui marche...)
merci d'avance!!

/*
Name : RLE
Author : Dauzat Lilian
Description : Compression / decompression suivant l'algorithme RLE
Date : 01/01/02
Copyright : Dauzat Lilian
Last update : 06/01/02
Email : obasileus@ifrance.com
*/

#include <stdio.h>

FILE *entre,*sortie;
unsigned char codeRepet=255,nbreRepet=1;
unsigned char AncCaract,caract,codeARepeter;

void compress(void);
void dcompress(void);

int main(int argc, char *argv[])
{
char option;
option = *argv[3];

entre = fopen(argv[1],"rb");
sortie = fopen(argv[2],"wb");

if (option == 'c') compress();
if (option == 'd') dcompress();

fclose(entre);
fclose(sortie);

return 0;
}

void compress(void)
{
fread(&AncCaract,sizeof(char),1,entre);

while (!feof(entre))
{
fread(&caract,sizeof(char),1,entre);

if (caract==AncCaract)
{
if (nbreRepet==253)
{
fwrite(&codeRepet,sizeof(char),1,sortie);
fwrite(&nbreRepet,sizeof(char),1,sortie);
fwrite(&AncCaract,sizeof(char),1,sortie);
nbreRepet = 1;
}
else nbreRepet++;
}

else
{
if (nbreRepet>3)
{
fwrite(&codeRepet,sizeof(char),1,sortie);
fwrite(&nbreRepet,sizeof(char),1,sortie);
fwrite(&AncCaract,sizeof(char),1,sortie);

}

else
{
for (short i=0 ; i!=nbreRepet ; i++)
{
fwrite(&AncCaract,sizeof(char),1,sortie);
}
}
nbreRepet = 1;
AncCaract = caract;
}
}
printf("Compression acheve");
}

void dcompress()
{
while (!feof(entre))
{
fread(&caract,sizeof(char),1,entre);

if (caract == codeRepet)
{
fread(&nbreRepet,sizeof(char),1,entre);
fread(&codeARepeter,sizeof(char),1,entre);

for (short i=0 ; i != nbreRepet ; i++)
{
fwrite(&codeARepeter,sizeof(char),1,sortie);
}
}
else
{
fwrite(&caract,sizeof(char),1,sortie);
}
}
printf("Decompression acheve");
}
vendredi 28 novembre 2003 à 13:30:24 | Re : debutant en c, probleme pour un programmme de compression

BruNews

Administrateur CodeS-SourceS
Ou est la partie specifique C++ qui pose probleme dans cet exemple RLE ?
BruNews, ciao...
vendredi 28 novembre 2003 à 13:37:09 | Re : debutant en c, probleme pour un programmme de compression

GoldenEye

Ou est le C++ ?
Optimiser, c'est bien, déboguer c'est mieux
vendredi 28 novembre 2003 à 17:30:41 | Re : debutant en c, probleme pour un programmme de compression

araborgne

et bien, le programme etait fourni avec en note qu'il etait ecrit en c++ 5.0, donc comme il ne marche pas je pensais que c'etait ca. lorsque je l'execute sur turbo borland dev-c++, il me marque une erreur, "general protection exception ... processor fault"
vendredi 28 novembre 2003 à 17:38:25 | Re : debutant en c, probleme pour un programmme de compression

BruNews

Administrateur CodeS-SourceS
en c++ 5.0 ne veut RIEN DIRE, plutot que serait fait sur VC++ 5 ok, compile pour du code 32 bits.
BruNews, ciao...


Cette discussion est classée dans : char, sizeof, sortie, fwrite, nbrerepet


Répondre à ce message

Sujets en rapport avec ce message

Problème d'effacement de tableau en C++ (sans MFC) [ par Shad0w ] Voilà, mon code copie le contenu d'un fichier dans une edit :------------- char fil[LEN]; OPENFILENAME ofn; ZeroMemory(&ofn, sizeof(OPENFI PROBLEME POINTEURS [ par zeloveur ] char * saisirChaine(){ int i=0; char *chn; chn=(char *)malloc(sizeof(char)); do { chn[i]=getchar(); chn=(char *)realloc(chn,(++i+1)*sizeof(char)); } liste chainée et lecture d'un fichier txt [ par whiteknight ] Bonjour j'ai un probleme pour charger des données depuis un fichier texte, les données recupérées doivent etre stocké dans un liste chainée déclaré ai taille chaine de char [ par langedechu ] Salut , voila mon prob (je sais plus comment faire) :j'ai une variable : const char *buffer; et j aimerais savoir le nombre de caractere stocker dans huffman [ par totomus ] Salut tou tle monde J'ai trouvé un petit programme sur le site à propos de la compression de huffmann, mais malheureusement, comme je suis débutant d Pb de compilation (error C2593: 'operator <<' est ambigu) [ par nanou_26 ] J'obtient une erreur de compilation "error C2593: 'operator T m_va Problème avec fwrite [ par riep ] bonjour j'ai un petit problème avec fwrite, en fait je voudrais tout simplement recopier les données d'un fichier 1 dans un fichier 2 seulement si ces plantage inexpliqué [ par graall ] bonjour, j'ai un problème avec ce code :     getch();     FILE *pHtml;     int nb_char = 0;     bool sortie = false; COLORREF to char* to COLORREF [ par melkiorlenecrarque ] Bonjour, Je voudrais envoyer à une application serveur un COLORREF  via send. J'ai donc besoin de transformer cette variable en char* Avec les exemp les fichiers [ par infodaoudi ] bonjour codeurj'ai la fonction suivantevoid Noeud::insererNF(char *fich,Noeud *ng){        ofstream A(fich,ios::out|ios::app|ios::binary);    if (!A)


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 2,418 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales