Compactador Simples
Publicado por Ricardo Rodrigues Lucca 27/02/2004
[ Hits: 16.908 ]
Homepage: http://aventurasdeumdevop.blogspot.com.br/
Estes programa serve para compactar um arquivo usando uma tecnica arcaica chamada run-length que compacta no maximo 255 caracteres num unico byte. Claro o programa esta mais flexivel(veja a tecnica na pagina onde me basiei), pois permite compactar qualquer arquivo já que não fica dependente de um caracter dito especial. Fora isso, ele pode demorar um bocado se o arquivo for muito grande e não tem um "salva-guarda" pra impedir que o arquivo fique maior.
/* Escrito Por Ricardo Rodrigues Lucca Este programa compacta um arquivo usando a seguinte forma: - Conta-se os caracteres repetidos em sequencia - Escreve os caracteres Ex.: Arquivo Original : 97 97 97 97 97 100 100 2 2 2 Arquivo Comprimido: 97 97 3 100 100 0 2 2 1 OBS: Quando o numero chega a 256 caracteres em sequencia é forçada uma escrita ja que não dá pra ter um valor maior de 255 em 1 byte. OBS2: O arquivo esta bem simples acredito que ninguem vai ter problemas de entendimento. Qualquer coisa email-me. OBS3: Baseado no site http://www.ulbra.tche.br/~danielnm/ed/E/polE.html */ #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 compacta(void) { int p, n, r, check=0; FILE *s; s = fopen("saida","w"); r = 0; n = fgetc(arq); while (!feof(arq)) { p = n; n = fgetc(arq); if (check==1) { check = 0; continue; } if (p==n) { r++; if (r==256) { fputc(p,s); fputc(p,s); fputc(r-1,s); r = 0; check = 1; } } else { fputc(p,s); if (r>0) { fputc(p,s); fputc(r-1,s); } r=0; } } fclose(s); } int main(void) { testa(); compacta(); fclose(arq); return 0; }
Super Thiagout (Breakout) - O Jogo
SIMULADOR DE DADOS DE RPG VAMPIRO A MÁSCARA - Corrigido
Nenhum coment�rio foi encontrado.
Aprenda a Gerenciar Permissões de Arquivos no Linux
Como transformar um áudio em vídeo com efeito de forma de onda (wave form)
Como aprovar Pull Requests em seu repositório Github via linha de comando
Visualizar arquivos em formato markdown (ex.: README.md) pelo terminal
Dando - teoricamente - um gás no Gnome-Shell do Arch Linux
Como instalar o Google Cloud CLI no Ubuntu/Debian
Mantenha seu Sistema Leve e Rápido com a Limpeza do APT!
Procurando vídeos de YouTube pelo terminal e assistindo via mpv (2025)
O que você está ouvindo agora? [2] (183)
Gestão de Ambiente em uma rede Linux (2)
Ajuda Pra Melhoria do NFTABLES. (7)
Zorin OS - Virtual Box não consigo abrir maquinas virtuais (4)