Compactador Simples
Publicado por Ricardo Rodrigues Lucca 27/02/2004
[ Hits: 17.078 ]
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;
}
Nenhum comentário foi encontrado.
Como atualizar sua versão estável do Debian
Cirurgia para acelerar o openSUSE em HD externo via USB
Void Server como Domain Control
Script de montagem de chroot automatica
Atualizar Linux Mint 22.2 para 22.3 beta
Jogar games da Battle.net no Linux com Faugus Launcher
Como fazer a Instalação de aplicativos para acesso remoto ao Linux
Instalar Dual Boot, Linux+Windows. (5)
Conky, alerta de temperatura alta (16)
De volta para o futuro - ou melhor, para o presente (parte 2) (3)









