Compression par suppression des blancs

Signaler
Messages postés
9
Date d'inscription
lundi 22 mai 2006
Statut
Membre
Dernière intervention
14 avril 2008
-
Messages postés
492
Date d'inscription
samedi 10 juillet 2004
Statut
Membre
Dernière intervention
12 janvier 2012
-
voila mon sujet:



Réaliser un programme en C++ permettant la compression d’un fichier texte fourni en donnée par suppression des caractères blancs.<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>





Rechercher des suites de blancs ou de caractères nuls. Lorsqu’une séquence de blancs est rencontrée, elle est remplacée par un couple de caractères ordonnés: le premier est un code spécial indiquant qu’il s’agit d’une répétition, le second est un compteur du nombre de blancs.






è

Afficher le fichier texte compressé.






è

Afficher la taille mémoire allouée aux fichiers compressé et non compressé ainsi que le Gain de Compression.





J’ai commencé à pondre du code mais ca ne marche pas des masses…

voila mon code:

//*********** BIBLIOTHEQUES  *********** **************


#include <stdio.h>
#include
#include <conio.h>
#include <string.h>


//*********** PROTOTYPES DES FONCTIONS **************


//*********** VARIABLES GLOBALES  *********************


//*********** PROGRAMME PRINCIPAL  *******************


 




void main()
{
  char chNomFichier[10];
  char* caract;
  int i=0;
  int CS=255;
  FILE* Buf;




  //ouvrir fichier
  printf("Entrez le nom du fichier a sauvegarder\n\n");
  scanf("%s",&chNomFichier);
  Buf=fopen(chNomFichier,"w+b");


  //ecriture ds le fichier
  printf("\nEntrez votre texte\n\n");
  scanf("\n\n%s",&caract);
  fwrite(&caract,sizeof(caract),1,Buf);


  //fermeture buffer
  fclose(Buf);
}




 //compression


 while(Buf==NULL)
 {
  fread (&caract,sizeof(caract),1,Buf);


  if(caract=" ")
   {
   i=i+1;
   }
   //codage du nbr de repetition sur un octet


   if(i=255)
   {
   fwrite (&caract,sizeof(CS),1,Buf);
   i++;
   i=0;
   }
  else
   {
   if(i>2)
    {
    fwrite (&caract,sizeof(CS),1,Buf);
    i++;
    i=0;
    }
   else
    {
    if(i=2)
     {
     fwrite (&caract,sizeof("  "),1,Buf);
     }
    if(i=1)
     {
     fwrite (&caract,sizeof(" "),1,Buf);
     }
    }
    fwrite (&caract,sizeof(caract),1,Buf);
   }
 }


}

1 réponse

Messages postés
492
Date d'inscription
samedi 10 juillet 2004
Statut
Membre
Dernière intervention
12 janvier 2012
1
Salut, peux-tu etre un peu plus explicite quand tu dis ca marche pas des masse. Et mettre un peu plus de code qui au passage n'est absolument pas du c++ mais du C !!!

<hr size="2" width="100%" />TuRn3r