Descompactador Simples

Publicado por Ricardo Rodrigues Lucca 27/02/2004

[ Hits: 8.579 ]

Homepage: http://aventurasdeumdevop.blogspot.com.br/

Download 1u.c




Este é o descompactor da tecnica arcaica run-length e deve ser usado com o script "Compactador Simples" para funcionar adequadamente.

Qualquer duvida sobre qualquer um dos programas email-me.

  



Esconder código-fonte

/*
        Escrito Por Ricardo Rodrigues Lucca

        Este programa descompacta um arquivo usando a seguinte forma:
                - Se a uma dupla de caracteres seguidos
         - Pega-se o proximo caracter
         - O caracter pegado indica quantas vezes o caracter duplicado devera ser ainda repetido.
      - Se não tiver dois caracteres seguidos
                   - Escreve o caracter pego anteriormente

        Ex.:
        Arquivo Comprimido: 97 97 3 100 100 0 2 2 1
        Arquivo Descomprimido: 97 97 97 97 97 100 100 2 2 2
   
       OBS: O arquivo esta bem simples acredito que ninguem vai ter problemas de entendimento. Qualquer coisa email-me.

       OBS2: Me basiei no site http://www.ulbra.tche.br/~danielnm/ed/E/polE.html, especificamente na tecnica run-length.

*/
#include <stdio.h>

FILE *arq;

void testa(void)
{
   char s[255];
   printf("Digite o nome do arquivo: ");
   scanf(" %s", s);

   arq = fopen(s,"r");
   if (arq==NULL) {
      printf("Arquivo nao existe!\n");
      testa();
   }   
}

void descompacta(void)
{
   int p, n, r, check=0;
   FILE *s;

   s = fopen("nve","w");
   r = 0;
   n = fgetc(arq);

   while (!feof(arq)) {
      p = n;
      n = fgetc(arq);
      if (check==1) {
         check = 0;
         continue;
      }
      
      if (p==n) {
            fputc(p,s);
            fputc(p,s);
            p = fgetc(arq);
            while (p>0)
            {
               fputc(n,s);
               p--;
            }
            r=0;
            check = 1;
      }
      else {
         fputc(p,s);
         r=0;
      }
   }   

   fclose(s);
}

int main(void)
{
   testa();
   descompacta();

   fclose(arq);
   return 0;
}

Scripts recomendados

Campo Elétrico

Preloader.c - Adaptação do Tarik Ahmad (Thiago Alexandre) para linux

Converçor de Decimal para Binario

Matriz Bidimensional

Saneago ncurses


  

Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts