Descompactador Simples

Publicado por Ricardo Rodrigues Lucca 27/02/2004

[ Hits: 8.672 ]

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

Teste de desempenho com números primos em C

Grafos

A - Comando strcmp

Exceções em C através de try-throw-catch

Distribuição Eletronica de Elementos Químicos em C++


  

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