Compactador Simples
Publicado por Ricardo Rodrigues Lucca 27/02/2004
[ Hits: 17.114 ]
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;
}
Vírus didático para Linux em C
Nenhum comentário foi encontrado.
Berry Bank: Criando um Banco Digital Gamificado para seus Filhos com Gentoo, Flask e Tailscale
Papagaiando o XFCE com temas e recursos
Instale o DOOM Retro no Gentoo facilmente via Overlay
Steam (Flatpak) rodando jogos em partição NTFS
O dock Plank + U-Launcher deixam qualquer desktop mais produtivo
Instalar Linux em notebook Sony Vaio VPCEG13EB (17)
Alguém tem que acabar com ANATEL!!! (10)
O que você está ouvindo agora? [2] (229)









