IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

compression/ décompression/ extraction


Sujet :

C

  1. #1
    Membre confirmé
    Profil pro
    Lycéen
    Inscrit en
    Novembre 2006
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Novembre 2006
    Messages : 105
    Par défaut compression/ décompression/ extraction
    Salut !

    j'ai comme projet de faire une compilation de documents, que je décompresserai et placerai dans des dossiers spécifiques via un programme.

    Mais voilà, les premiers problemes se posent : comment compresser et joindre tous mes documents dans un meme fichier, et les extraires par la suite via mon programme ? existe il une lib ou une technique intéressante pour ce genre de manipullation ?

    merci, ++ Tix.

  2. #2
    Rédacteur
    Avatar de Neitsa
    Homme Profil pro
    Chercheur sécurité informatique
    Inscrit en
    Octobre 2003
    Messages
    1 041
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chercheur sécurité informatique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 041
    Par défaut
    Bonjour,

    Citation Envoyé par tixweb
    Salut !

    j'ai comme projet de faire une compilation de documents, que je décompresserai et placerai dans des dossiers spécifiques via un programme.

    Mais voilà, les premiers problemes se posent : comment compresser et joindre tous mes documents dans un meme fichier, et les extraires par la suite via mon programme ? existe il une lib ou une technique intéressante pour ce genre de manipullation ?

    merci, ++ Tix.
    Une solution possible serait de créer un fichier pour y mettre tous les fichiers compressés. Ce fichier unique comprendrait une en-tête (binaire), donnant la structure même du fichier.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    typedef struct _CompressedFile {
    size_t SizeOfCompressedFile; /* taille du fichier compressé */
    void* pFile; /* pointeur (dans le fichier) vers les données du fichier compressé */
    } CompressedFile;
     
    typedef struct _Header {
    size_t SizeOfHeader; /* taille de l'en-tête */
    unsigned int NumberOfCompressedFile; /* nombre de fichiers compressés */
    CompressedFile[] Array; // tableau de structure "CompressedFile"
    } Header;
    Donc lorsque tu compresses, tu crées un fichier qui contiendra tous les fichiers compressé (une archive en somme).

    A ce stade tu sais déjà combien de fichier tu va compresser, tu peux donc allouer la taille nécessaire à l'entête et remplir les champs adéquats (Taille du header, Nombre de fichier compressé).

    Tu compresses le fichier 1 et obtiens sa taille compressé, tu remplis Array[0] (structure "CompressedFile") et met le fichier compressé dans l'archive. Tu passes au fichier 2 et rempli Array[1], etc.

    La décompression revient uniquement à lire l'entête, extraire le fichier copressé et passer ce fichier à un décompresseur.

    Généralement le fichier compressé à un champ renseignant sur sa taille décompressée (suivant l'algo de compression / décompression). Donc théoriquement il n'y pas à s'occuper de cela.

    Si tu t'intéresse à la théorie de compression des données, jette un coup d'oeil au alog type LZ (Lempel Ziv) ou Huffman qui sont relativement simples à implémenter.

    Si tu ne veux pas t'ennuyer avec la compression / décompression en elle même tu peux utiliser un bibliothèque.

    Certaines gèrent déjà la compression de fichier multiples en archive (ZIP par exemple).

  3. #3
    Membre éclairé Avatar de GyZmoO
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    428
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2006
    Messages : 428
    Par défaut
    Si tu cherches l'algo LZW déja codé en C, dis le, je l'ai et il marche trés bien !

  4. #4
    Membre confirmé
    Profil pro
    Lycéen
    Inscrit en
    Novembre 2006
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Novembre 2006
    Messages : 105
    Par défaut
    Ouille ^^

    pour le momment, je vais me contenter de libs je crois, ca sera plus efficace.

    On m'a parlé de Gzip ,et ZLib

    j'ai regardé en diagonale leur site respectif, ca m'a l'aire intéressant.

    les auriez vous déjà utilisées ?

    merci, ++ Tix.

  5. #5
    Membre confirmé
    Profil pro
    Lycéen
    Inscrit en
    Novembre 2006
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Novembre 2006
    Messages : 105
    Par défaut
    Haha !

    j'ai craqué pour Gzip.

    Or, voila, j'arrive a compresser, mais pas a décompresser !

    Ques est donc la marche a suivre ?

    merci, ++ Tix.

  6. #6
    Membre éprouvé
    Avatar de Shugo78
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    1 119
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 119
    Par défaut
    Gzip ne permet pas de décompresser, il me semble qu'il faut utiliser gunzip ou alors, si tu es sous linux, tu peux faire appel à la commande system

  7. #7
    Membre confirmé
    Profil pro
    Lycéen
    Inscrit en
    Novembre 2006
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Novembre 2006
    Messages : 105
    Par défaut
    merci, j'ai récuperé le fichié (avec du mal dailleur ^^)

    mais, comment s'utilise donc ce gunzip ?, puis-je trouver ses sources pour l'implémenter dans mon programme ?

    merci, ++ Tix.

  8. #8
    Membre éprouvé
    Avatar de Shugo78
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    1 119
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 119
    Par défaut
    J'espére que tu aimes bien l'anglais -> http://www.gzip.org/

  9. #9
    Membre confirmé
    Profil pro
    Lycéen
    Inscrit en
    Novembre 2006
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Novembre 2006
    Messages : 105
    Par défaut
    mercibien, mais j'ai déjà lu cette page en diagonale, et les infos qu'elle donne ne m'ont pour l'instant pas encore permises d'arrivé a mes fins

    ++ Tix.

  10. #10
    Membre éprouvé
    Avatar de Shugo78
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    1 119
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 119
    Par défaut
    Ca dépend de tes fins
    gzip produces files with a .gz extension. gunzip can decompress files created by gzip, compress or pack
    Si tu cherches gunzip , il est là :
    Citation Envoyé par FAQ de fin de page
    Where is gunzip for MSDOS or Windows?


    The MSDOS gzip package contains a file README.DOS, please read it. In short: copy gzip.exe gunzip.exe
    Voiloù, ça doit répondre à ta question, non ?

  11. #11
    Membre confirmé
    Profil pro
    Lycéen
    Inscrit en
    Novembre 2006
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Novembre 2006
    Messages : 105
    Par défaut
    vivi, j'ai bien touvé Gunzip ... mais compilé

    et, j'aimerai bien récuperer les sources (aurais-je mal compris quelquechose ? probable)

    et, je galere toujours pour l'utiliser, mais ca va venir, je le sent ! ^^

    merci, ++ Tix.

  12. #12
    Membre éprouvé
    Avatar de Shugo78
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    1 119
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 119
    Par défaut
    pourquoi tu veux les sources ?
    Il te suffit de l'éxécuter avec system en fournissant le nom du fichier à décompresser....

  13. #13
    Membre confirmé
    Profil pro
    Lycéen
    Inscrit en
    Novembre 2006
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Novembre 2006
    Messages : 105
    Par défaut
    c'était pour faire un genre d'installeur

    j'ai trouvé mieu, merci pour vos réponses ! :]

  14. #14
    Membre éprouvé
    Avatar de Shugo78
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    1 119
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 119
    Par défaut
    Bah ta qua cré un installateur avec des logiciels fait pour ça

  15. #15
    Membre confirmé
    Profil pro
    Lycéen
    Inscrit en
    Novembre 2006
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Novembre 2006
    Messages : 105
    Par défaut
    Non, mon programme est bien trop bizarre pour un installeur normal :o ^^

  16. #16
    Membre éprouvé
    Avatar de Shugo78
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    1 119
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 119
    Par défaut
    Tu peux toujours appeler gunzip et gzip pour compresser et décompresser, ta pas besoin des sources

  17. #17
    Membre confirmé
    Profil pro
    Lycéen
    Inscrit en
    Novembre 2006
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Novembre 2006
    Messages : 105
    Par défaut
    mais, ca ferait bcp de prgrms pour un installeur, non ?
    enfin, pour l'instant, je fait comme ca alors, ptet vais-je continuer ^^

    ++

  18. #18
    Membre éprouvé
    Avatar de Shugo78
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    1 119
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 119
    Par défaut
    Non pas vraiment, il te suffit de mettre les deux *.exe gunzip et gzip avec ton programme(remarque : Si ton installateur se contente de décompresser, tu na même pas besoin de gzip)ensuite lorsque tu a besoin de décompresser un élément :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    system("gunzip element");
    C'est pas compliqué

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Compression/décompression d'un byte[]
    Par mister3957 dans le forum Général Dotnet
    Réponses: 1
    Dernier message: 16/11/2007, 16h12
  2. Réponses: 7
    Dernier message: 01/05/2007, 21h55
  3. Compression & décompression de texte
    Par crocodilex dans le forum Algorithmes et structures de données
    Réponses: 10
    Dernier message: 17/05/2006, 22h05
  4. [zLib] Compresser/Décompresser des données
    Par alex6891 dans le forum Réseau
    Réponses: 10
    Dernier message: 25/03/2006, 11h35
  5. Bibliothèque de compression décompression
    Par YéTeeh dans le forum Bibliothèques
    Réponses: 1
    Dernier message: 13/03/2006, 23h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo