Présentation
Documentation
L'équipe
Sérialisation
 
Programmes
Objets
Libs Utilitaires
Libs Internes
   
 
Editeur
Syntaxes
Windows
Versions
   

SCR/AL1 - TOME III. Les librairies utilitaires

14. Le groupe s_lzh

14.6 LzhEncodeGnl (file s_lzh.c:788)

Syntax

LzhEncodeGnl(getfn, putfn, sizfn)
int (*getfn)(), (*putfn)();
long (*sizfn)();

Description

Fonction générale de compactage de données basée sur l'algorithme de Lempel-Zev et sur la méthode de Huffmann.

Cette fonction prend 3 pointeurs vers des fonctions en argument :

Valeur retournée

Le code retour est nul sauf en cas d'erreur

Dans le cas du compactage d'un fichier, les fonctions peuvent être par exemple définies comme suit :

    FILE    *LZH_infile, *LZH_outfile;

LzhGetFile()
{
return(getc(LZH_infile));
}

LzhPutFile(c)
int c;
{
return(putc(c, LZH_outfile));
}

long LzhSizFile()
{
long pos;

fseek(LZH_infile, 0L, 2);
pos = ftell(LZH_infile);
fseek(LZH_infile, 0L, 0);
return(pos);
}

et l'appel à la fonction d'encodage :

    LzhEncodeFile(filein, fileout)
char *filein, *fileout;
{
int rc;

LZH_infile = fopen(filein, "rb");
if(LZH_infile == 0) return(-1);
LZH_outfile = fopen(fileout, "wb+");
if(LZH_outfile == 0) {
fclose(LZH_infile);
return(-1);
}

rc = LzhEncodeGnl(LzhGetFile, LzhPutFile, LzhSizFile);
fclose(LZH_infile);
fclose(LZH_outfile);
return(rc);
}

Rien n'empêche donc de ne compacter qu'une partie de fichier ou de stocker dans le fichier résultat d'autres données comme le nom du fichier en clair. De plus, on peut facilement encrypter les données compactées en intervenant au niveau de la fonction putfn.

Voir également

LzhDecodeGnl(), LzhEncodeFile(), LzhEncodeStr()

14.6.1 File s_lzh.c

LzhDecodeGnl(getfn, putfn)
LzhEncodeGnl(getfn, putfn, sizfn)

Copyright © 1998-2015 Jean-Marc Paul and Bernard PAUL - Envoyez vos remarques ou commentaires à bernard@xon.be