Compactador Simples
Publicado por Ricardo Rodrigues Lucca 27/02/2004
[ Hits: 17.095 ]
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;
}
Jogo da Velha contra o Computador.
Nenhum comentário foi encontrado.
Trabalhando Nativamente com Logs no Linux
Jogando Daikatana (Steam) com Patch 1.3 via Luxtorpeda no Linux
LazyDocker – Interface de Usuário em Tempo Real para o Docker
Linux Mint: Zram + Swapfile em Btrfs
O widget do Plasma 6 Área de Notificação
Pendrive do Ubuntu 24.04 travando ao tentar fazer a instalação dual bo... (1)
Instalar Dual Boot, Linux+Windows. (13)
tentei instalar o steam pelo terminal, agora ele não abre (3)









